我有自定义列表和字典。
class HldSS
{
string ID
string IDLong
string Name
// other fields
}
class SecurityID
{
string ID1
string ID2
string IDLong
}
我的列表hldList是
List<HldSS>
&安培;我的字典dicID是(其中ID1是键值)
Dictionary<string, SecurityID>
我要做的是使用字典填充hldList中的IDLong字段。所以我试着通过在ID字段&amp;上加入我的hldList和dicID来编写一个linq查询来更新我的hldList中的字段IDLong。关键价值。
但是我开始编写下面的查询,我不确定如何继续进行。
List<HldSS> res = from hld in hldList
join dic in dicID
on hld.ID equals dic.Key
我正在寻找的例子
hldList dicID
ID IDLong ID1 IDLong
ABC ABC ABC123
ABC LMN LMN456
LMN
PLO
ABC
结果
hldList
ID IDLong
ABC ABC123
ABC ABC123
LMN LMN456
PLO
ABC ABC123
答案 0 :(得分:2)
一般情况下,LINQ查询不应该更新某些内容,您必须创建一个新列表。
var query = from hld in hldList
join dic in dicID
on hld.ID equals dic.Key
select new HldSS
{
ID = hld.ID,
IDLong = dic.Value.IDLong,
Name = hld.Name,
// other properties
};
List<HldSS> res = query.ToList();
如果你想更新原始列表,你必须循环它:
foreach(HldSS h in hldList)
{
SecurityID sec;
if(dic.TryGetValue(h.ID, out sec))
h.IDLong = sec.IDLong;
}
这也比LINQ查询更有效。