结合LINQ查询以获取唯一记录

时间:2011-02-03 11:57:43

标签: linq

我正试图找出一种结合这两个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();

1 个答案:

答案 0 :(得分:1)

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