2011-02-03 99 views
0

我想弄清楚结合这两个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

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

+0

因此,要保持事情相当简单和可读,最好的做法是多查询? – FloatLeft 2011-02-03 12:43:53