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
    }             
} 

我真的很想知道我在哪里错过了它。提前感谢

Linq到SQL逻辑错误,并且在比较两个列表时不返回任何值

包含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);