我有以下语句中使用时不同的结果:当WHERE子句的LINQ语句中使用的生产外
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所有会话,现在当我重写喜欢的声明如下所示,无论返回所有会话,就好像该子句总是成立,任何人都可以对此有所了解吗?
var items = from i in Agenda.AgendaSessions
where i.Tracks.Any(s=> tracks.Contains(s.Code))
select i;
更新
如果在这里内的其他条款,不影响结果吗?
样品是相同的。除了第一种情况,你创建一个新的枚举器。 “Agenda.AgendaSessions.Where(...)'? – 2010-08-08 09:26:33
我知道他们是等效的,但为什么第二个产生正确的结果呢? – Ayyash 2010-08-08 10:48:19