Codewise,使用linq这是最干净的方法吗?下面,我有一个粗略的例子,我想找到一个基于名称的匹配类实例.
class item
{
string name {get;set;}
int identifier {get;set;}
}
void DoSomething()
{
List<item> List1 = GetSampleItems();
List<item> List2 = GetOtherSampleItems();
for(int a=0;a<List1.count;a++)
{
for(int b=0;b<List2.count;b++)
{
if(List1[a].identifier == List2[b].identifier)
{
List1[a].name = List2[b].name;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
D S*_*ley 10
Linq用于查询而不是更新,因此您仍然需要循环搜索结果以进行更改,但您可以join匹配两个列表,如下所示:
var query = from l1 in List1
join l2 in List2
on l1.identifier equals l2.identifier
select new {l1, l2};
Run Code Online (Sandbox Code Playgroud)
现在循环查询以更新l1项目:
foreach(var item in query)
item.l1.name = item.l2.name;
Run Code Online (Sandbox Code Playgroud)
作为旁注,你的方式没有任何问题(如果发现匹配,你可以突破内循环).如果您了解它的工作原理并且性能可以接受,那么就没有令人信服的理由来改变它.