我创建了一个类的列表对象,然后我更新了它的值,它的值没有更新,请帮助我,这是我的代码
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;
}
