Linq到SQL逻辑错误,并且在比较两个列表时不返回任何值
本文关键字:两个 列表 任何值 返回 比较 SQL 错误 Linq | 更新日期: 2023-09-27 18:27:21
我试图比较两个列表,并通过比较这些列表中的3个字段来返回不匹配的项。例如
List<Chemical> mList = mresult.ToList(); -- less 5 items
List<Chemical> xList = xresult.ToList(); -- 7 items -- need 2 items back
foreach (var List in xList )
{
if (!(mList .Exists(x => x.MSD_ID == List.MSD_ID)) && !(mList .Exists(y => y.Roman_ID == List.Roman_ID)) && !(mList .Exists(z => z.Source_System_ID == List.Source_System_ID)))
{
Chemical x = new Chemical
{
MSD_ID = List.MSD_ID,
Roman_ID = List.Roman_ID,
Source_System_ID = List.Source_System_ID
};
unmatchedList.Add(x); --need 2 items but returns none
}
}
我真的很想知道我在哪里错过了它。提前感谢
包含NuGet的MoreLinq包并使用:
List<Chemical> mList = mresult.ToList(); -- less 5 items
List<Chemical> xList = xresult.ToList(); -- 7 items -- need 2 items back
var unmatchedList = xList.ExceptBy(mLlist,x=>new {x.MSG_ID,x.Roman_ID,x.Source_System_ID});
或者,您可以实现IEqualityComparer,如下所示:List.Except不工作
如果你的化学课只有这3个字段,那么就:
List<Chemical> mList = mresult.ToList(); -- less 5 items
List<Chemical> xList = xresult.ToList(); -- 7 items -- need 2 items back
var unmatchedList = xList.Except(mLlist);