使用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_member
和5th_member
,我有2个具有int键和int值的字典列表。(四分之一,五分之一)
我想根据字典更新这些成员。例如,如果dictionary的key = id,则将4th_member
更新为dictionary的value。
我希望我的问题足够清楚。
我测试了下面的代码,它运行良好。
如果我正确理解了你的问题,希望这将解决你的问题
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;
}
}