使用LINQ更新类中的成员

本文关键字:成员 LINQ 更新 使用 | 更新日期: 2023-09-27 18:01:57

我有一个5个成员的类。像这样:

class Demo
{
    public int id;
    public string name;
    public string color;
    public int 4th_member;
    public int 5th_member;
}

我有这类学生的名单。

对于4th_member5th_member,我有2个具有int键和int值的字典列表。(四分之一,五分之一)

我想根据字典更新这些成员。例如,如果dictionary的key = id,则将4th_member更新为dictionary的value。

我希望我的问题足够清楚。

使用LINQ更新类中的成员

我测试了下面的代码,它运行良好。

如果我正确理解了你的问题,希望这将解决你的问题

var demo = demoTest.Select(s =>
           {
            s.Fourthth_member = dic.GetValueFromDictonary(s.Fourthth_member);
            s.Fifthth_member = dic1.GetValueFromDictonary(s.Fifthth_member);
            return s;
          }).ToList();
//Extension method
public static class extMethod
{
  public static int GetValueFromDictonary(this Dictionary<int, int> dic, int key)
    {
        int value = 0;
        dic.TryGetValue(key, out value);
        return value;
    }
}

linq不是用于更新数据,而是用于查询。这是一个可能的解决方案:

foreach(var demo in demoList)
{
    if(dictionaries[0].ContainsKey(demo.id))
    {
        demo.member4 = dictionaries[0][demo.id];
    }
    if (dictionaries[1].ContainsKey(demo.id))
    {
        demo.member5 = dictionaries[1][demo.id];
    }
}

或与TryGetValue

foreach(var demo in demoList)
{
    int value;
    if(dictionaries[0].TryGetValue(demo.id, out value))
    {
        demo.member4 = value;
    }
    if (dictionaries[1].TryGetValue(demo.id, out value))
    {
        demo.member5 = value;
    }
}
相关文章: