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

Jat*_*rma 1 c#

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

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 });
Run Code Online (Sandbox Code Playgroud)

之后,我正在尝试更新此值:

locList.Where(a => a.LocId == 7).ToList()
       .ForEach(b => b.ControlCount = b.ControlCount + 1);
Run Code Online (Sandbox Code Playgroud)

但没有更新我也尝试这个但没有更新

(from loc in locList select loc).ToList().ForEach((loc) =>
{
   loc.ControlCount = loc.ControlCount + 1;
});
Run Code Online (Sandbox Code Playgroud)

Mar*_*zek 6

那是因为你lacList声明时实际上并没有实现任何物体.它只是一个查询定义(因为延迟了LINQ执行),所以每次使用它时都会LocationDate创建新项目.

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

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

说实话,我不明白为什么你使用List<T>.ForEach方法而不是od foreach循环.您必须实现new List<T>以使用Where源集合上的过滤器集调用该方法.使用时您不必这样做foreach:

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