如何将两个LINQ语句合并为一个以执行list2.Except(list1)?
目前,我有以下LINQ查询。如何将两个查询合并为一个查询。基本上,编写一个LINQ查询来返回我从中得到的结果如何将两个LINQ语句合并为一个以执行list2.Except(list1)?,linq,entity-framework,entity-framework-4,Linq,Entity Framework,Entity Framework 4,目前,我有以下LINQ查询。如何将两个查询合并为一个查询。基本上,编写一个LINQ查询来返回我从中得到的结果 IEnumerable<int> deltaList = people2010.Except(allPeople); 谢谢 为什么你不能只做而不做你正在做的?不要忘记,您的people2010和allPeople变量只是查询-它们不是数据。为什么不直接使用它们呢 如果由于某些原因不能接受,请提供更多信息,例如这是否在LINQ to Object、LINQ to SQL等中,
IEnumerable<int> deltaList = people2010.Except(allPeople);
谢谢 为什么你不能只做
而不做你正在做的?不要忘记,您的people2010
和allPeople
变量只是查询-它们不是数据。为什么不直接使用它们呢
如果由于某些原因不能接受,请提供更多信息,例如这是否在LINQ to Object、LINQ to SQL等中,以及仅使用Except有什么问题。听起来您只是在寻找一种更优雅的方式来编写查询。我相信这是编写组合查询的更优雅的方式:
var deltaList =
from contact in Contacts
let contractors = contact.Contractors
where contractors.Any(ctor => ctor.ContractorStatusTrackings
.Any(date => date.StatusDate.Year >= 2010))
&& !contractors.Any(m => m.ContactID == contact.ContactID)
select contact.ContactID
从逻辑上讲,将所有人排除在外的人的子集有意义吗?那么为什么你的变量名暗示这就是你想要的呢?“别忘了你的people2010和allPeople变量只是查询——它们不是数据”——很好!在这一点上,有理由避免,除了。我在寻找可能的方法来改进查询。也许写一个查询而不是两个。
var deltaList =
from contact in Contacts
let contractors = contact.Contractors
where contractors.Any(ctor => ctor.ContractorStatusTrackings
.Any(date => date.StatusDate.Year >= 2010))
&& !contractors.Any(m => m.ContactID == contact.ContactID)
select contact.ContactID