表Reords:
TableA
SerialNUmber Status
001 OK
002 N/A
TableB
SerialNumber Status
001 OK
003 N/A
var ret = (from p in TableA.AsEnumerable()
join q in TableB.AsEnumerable()
on p.Field<string>("SerialNumber") equals q.Field<string>("SerialNumber")
select new
{
SerialNUmber = q["SerialNumber"],
UnitStatus = "HOT",
PartNumber = q["PartNumber"]
}).ToList();
ret
SerialNumber Status
001 OK
此查询返回“我的列表”中的匹配数据。现在我需要做另一种方式来显示彼此不相等的序列号。
保留
SerialNumber Status
002 N/A
003 N/A
提前致谢!
答案 0 :(得分:2)
您可以像这样实现EqualityComparer:
public class SerialNumberComparer : IEqualityComparer<DataRow>
{
public bool Equals(Datarow d1, DataRow d2)
{
return d1.Field<string>("SerialNumber") == d2.Field<string>("SerialNumber");
}
}
然后使用LINQ扩展方法Except
:
var aEnum = TableA.AsEnumerable();
var bEnum = TableB.AsEnumerable();
var comp = new SerialNumberComparer();
var ret = from q in bEnum.Except(aEnum, comp).Concat(aEnum.Except(bEnum, comp))
select new
{
SerialNumber = q["SerialNumber"],
UnitStatus = "HOT",
PartNumber = q["PartNumber"]
};