解释LINQ All()表达式

dat*_*r02 0 c# linq

我想知道是否有人可以用两个列表帮助解释这个表达式,

originalForm.FormItems.Where(x =>
     newForm.FormItems.All(y => y.ItemId != x.ItemId));
Run Code Online (Sandbox Code Playgroud)

我认为应该返回originalForm中的项目而不是newForm中的项目,但是,当我自己尝试理解它时,我认为它正好相反.如果有人可以为我分解它,那将是一个很大的帮助.

提前致谢 :)

Pat*_*man 6

相当于你的代码更清晰的是这段代码使用Except:

var l = originalForm.Select(x => x.ItemId).Except(newForm.FormItems.Select(y => y.ItemId));
Run Code Online (Sandbox Code Playgroud)

这只会获取商品ID.如果需要,您可以稍后查看实际的项目:

originalForm.Where(x => l.Contains(x.ItemId));
Run Code Online (Sandbox Code Playgroud)

您的代码"where not any"是"where none",与"except"相同.

  • @Mardoxx更新. (2认同)