gpt4 book ai didi

c# - 当 Where 子句在 Linq 语句内部使用时产生的结果与在外部使用时不同

转载 作者:行者123 更新时间:2023-11-30 12:36:24 25 4
gpt4 key购买 nike

我有以下声明:

List<string> tracks = new List<string> { "ABC", "DEF" };
var items = (from i in Agenda.AgendaSessions
select i).Where(p => p.Tracks.Any(s => tracks.Contains(s.Code)));

这会返回轨道包含 ABC 或 DEF 的所有 session ,现在当我像下面这样重写语句时,它会返回所有 session ,不管怎样,就好像该子句总是为真一样,请问有人能解释一下吗?

var items = from i in Agenda.AgendaSessions
where i.Tracks.Any(s=> tracks.Contains(s.Code))
select i;

更新

如果where中还有其他子句,会影响结果吗?

最佳答案

这两个代码片段是等效的,即它们在所有情况下都应该始终产生相同的结果。当然,这是假设 AgendaSessionsTracks.Contains() 是我们所期望的;如果它们是具有奇怪副作用的属性 getter /方法,例如修改 tracks 的内容,那么任何事情都可能发生。

换句话说,在不知道您的其余代码是什么样子的情况下,我们无法为您提供帮助,因为这两个代码片段之间没有语义差异。

关于c# - 当 Where 子句在 Linq 语句内部使用时产生的结果与在外部使用时不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3433693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com