列表<;对象>;比较
本文关键字:比较 gt 对象 列表 lt | 更新日期: 2023-09-27 18:29:08
我搜索了几个例子,但没有找到一个与我所拥有的和我想要实现的相似的例子。
我有两个列表
class object1
{
string obj1_name;
int obj1_qty;
}
List<object1> listA
class object2
{
string obj2_name;
int obj2_qty;
}
List<object2> listB;
现在,使用ListA作为主列表,我想看看ListB是否包含具有相同名称的对象,如果是,数量是多少,因此obj1_qty=obj2_qty是否相互关联?如果没有,那就有区别,我需要把它显示出来,很可能是在第三个列表中,如果存在的话,这就是区别。注意,ListA可以大于或小于ListB
- 显示所有列表A(主列表包含所有对象)
- 显示两个列表中存在的名称/数量之间的差异
感谢
像加入这样的Souncs对您有效:
var query = from a in listA
join b in listB on a.obj1_name equals b.obj2_name
where a.obj1_qty != b.obj2_qty
select new {
Name = a.obj1_name,
QtyA = a.obj1_qty,
QtyB = b.obj2_qty,
Diff = a.obj1_qty - b.obj2_qty
};
最简单的方法就是使用Linq 中的联接
var items = from l1 in listA
join l2tmp1 in listB on l1.obj1_name equals l2.obj2_name into l2tmp2
from l2 in l2tmp2.DefaultIfEmpty();
select new {
ItemA = l1,
ItemB = l2,
Name = l1.obj1_name,
Difference = (l2 == null) ? 0 : l1.ob1_qty - l2.ob2_qty
};
items
现在将保存一个匿名类的IEnumerable
,该类保存对ListA中项目的引用、对listB中项目的参考、匹配名称和差异。