我想知道是否有人可以用两个列表帮助解释这个表达式,
originalForm.FormItems.Where(x =>
newForm.FormItems.All(y => y.ItemId != x.ItemId));
Run Code Online (Sandbox Code Playgroud)
我认为应该返回originalForm中的项目而不是newForm中的项目,但是,当我自己尝试理解它时,我认为它正好相反.如果有人可以为我分解它,那将是一个很大的帮助.
提前致谢 :)
相当于你的代码更清晰的是这段代码使用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"相同.