我搜索过一些例子,但没有找到一个与我所拥有的和我想要达到的相似的例子。
我有2个列表
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
格拉西亚斯
答案 0 :(得分:3)
喜欢加入的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
};
答案 1 :(得分:2)
最简单的方法就是使用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中项目的引用,匹配名称和差异。