Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将两个LINQ语句合并为一个以执行list2.Except(list1)?_Linq_Entity Framework_Entity Framework 4 - Fatal编程技术网

如何将两个LINQ语句合并为一个以执行list2.Except(list1)?

如何将两个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等中,

目前,我有以下LINQ查询。如何将两个查询合并为一个查询。基本上,编写一个LINQ查询来返回我从中得到的结果

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