Skip to main content
 首页 » 编程设计

c#之如何更新集合类型对象中的值

2024年01月24日27bhlsheji

我创建了一个类的列表对象,然后我更新了它的值,它的值没有更新,请帮助我,这是我的代码

public class LocationData 
{ 
    public int LocId { get; set; } 
    public string LocatinName { get; set; } 
    public int ControlCount { get; set; } 
    public Nullable<short> KeyType { get; set; } 
    public Nullable<short> Financial_Reporting { get; set; } 
    public Nullable<short> FraudRisk { get; set; } 
    public Nullable<short> FinancialControl { get; set; } 
    public Nullable<short> ELC { get; set; } 
} 
 
 var locList = location.Select(a => 
               new LocationData { LocatinName = a.Location, LocId = a.LocID }); 

之后,我尝试更新其中的值:

locList.Where(a => a.LocId == 7).ToList() 
       .ForEach(b => b.ControlCount = b.ControlCount + 1); 

但是什么都没有更新我也试过了但是没有更新

(from loc in locList select loc).ToList().ForEach((loc) => 
{ 
   loc.ControlCount = loc.ControlCount + 1; 
}); 

请您参考如下方法:

那是因为在 lacList 时您实际上并没有获取任何物化的对象被宣布。它只是一个查询定义(因为 LINQ 执行被推迟),所以每次你使用它时都是新的 LocationDate项已创建。

调用ToList()声明 lacList 时它会起作用:

var locList= location.Select(a => new LocationData { LocatinName = a.Location, LocId = a.LocID }).ToList(); 

老实说,我不明白你为什么要使用 List<T>.ForEach方法代替 od foreach环形。你必须实现新的List<T>用 Where 调用该方法在源集合上设置过滤器。使用 foreach 时您不必这样做:

foreach(var item in locList.Where(a => a.LocID == 7)) 
{ 
    item.ControlCount += 1; 
}