我有两个清单:
List<ObjA> AList;
List<ObjB> BList;
现在,我有一种方法可以将单个Obj A
与Obj B
进行比较:
void CompareObjAToObjB(ObjA a, ObjB b)
{
....
}
通过比较它来断言对象的各个元素。现在,我通过使用唯一标识符对两个列表进行排序,然后通过for
循环迭代排序列表并调用Compare
方法。
有没有更好的方法来比较使用Lambda表达式或Linq的列表?
Edit
确定。这是我的原始代码..
Alist.sort((x,y) => string.Compare(x.acctNumber, y.acctNumber));
Blist.sort((x,y) => string.Compare(x.acctNumber, y.acctNumber));
for(int i =0; i< Alist.count; i++)
{
CompareObjAToObjB(Alist[i], Blist[i]);
}
Alist包含我输入的repo对象,其中BList是通过Service API调用返回的Object。两者都包含相同的数据,但结构不同。
答案 0 :(得分:5)
假设您要查找具有相同标识符的所有项目,可以使用Join
:
var inBoth = from a in AList
join b in BList
on a.UniqueIdentifier equals b.UniqueIdentifier
select new { a, b };
foreach(var ab in inBoth)
Console.WriteLine("A:{0} B:{1}", a.ToString(), b.ToString()); // if ObjA and ObjB have a meaningful ToString