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
组合LINQ查询以获得唯一记录_Linq - Fatal编程技术网

组合LINQ查询以获得唯一记录

组合LINQ查询以获得唯一记录,linq,Linq,我正试图找到一种结合这两个LINQ查询的方法。第一个创建假日客户列表,第二个根据电子邮件地址对列表进行重复数据消除 最简洁的组合方式是什么 var allNonBuyers = (from a in allCustomers where !(from q in db.Quotes where q.CreationDate > DateTime.No

我正试图找到一种结合这两个LINQ查询的方法。第一个创建假日客户列表,第二个根据电子邮件地址对列表进行重复数据消除

最简洁的组合方式是什么

        var allNonBuyers = (from a in allCustomers
                            where !(from q in db.Quotes
                                    where q.CreationDate > DateTime.Now.AddMinutes(duration)
                                    join p in db.Passengers on q.QuoteGUID equals p.QuoteGUID
                                    where q.PolicyNumber != null
                                    select p.EmailAddress).Contains(a.EmailAddress)
                            select new { a.QuoteGUID, a.Title, a.FirstName, a.LastName, a.EmailAddress, a.Telephone });

        var distinctNonBuyers = from buyer in allNonBuyers
                                group buyer by buyer.EmailAddress
                                    into gbuyer
                                    select gbuyer.First();

您通常不需要这样做,因为LINQ延迟了执行,当您请求结果时,它将全部合并。如果这是Linq To Sql,那么它将作为一条语句(如果可能)针对数据库执行。

那么,为了保持事情相当简单和可读性,最好使用多个查询?@FloatLeft是的,但我总是先在Linq pad中测试我的查询,有时Linq2SQL会生成大量sql语句,而您不需要将其排除在外。Linq具有延迟和非延迟运算符。只要不使用非Deferred运算符,查询将在枚举之前不会执行。First()是一个非deferred运算符,因此它将在该点执行。是否可以使用“into”键而不是使用2个变量将这2个查询重新连接为一个查询如果希望将其作为一个查询,只需使用实际查询替换AllNonPowers变量即可