连接一个LINQ (To SQL)查询

本文关键字:To SQL 查询 LINQ 一个 连接 | 更新日期: 2023-09-27 18:07:33

我正在构建一个LINQ查询,它将具有附加到'where'部分的比较(这些比较的数量取决于用户的选择)。

在代码后面,我想要这样的东西:

var builtQuery =
             from q in dc.Leads
             join sr in dc.SalesReps on q.SalesRepID equals sr.SalesRepID
             join co in dc.Companies on q.CompanyID equals co.CompanyID
             join or in dc.Origins on q.OriginID equals or.OriginID
             join pr in dc.Products on q.ProductID equals pr.ProductID
             where

这里,在'from'和'select'部分之间,我将添加一些比较(取决于用户选择的复选框)。

最后:

select new { q.Ref, sr.Rep, q.Deposit, q.Sale, q.Title, q.Names, q.Surname, q.HomePhone, q.WorkPhone, q.Mobile, q.Address, q.Suburb, q.County, q.Postcode, co.CompanyName, or.OriginName, pr.ProductName, q.Telemarket, q.Entered };

在PHP(使用MySQL)中,我可以简单地连接一些字符串,这些字符串组成查询。但是,在c#/LINQ To SQL中,查询不是字符串,所以我不知道如何做到这一点……在SO上有几个类似的问题,但它们不完全是一回事。

有什么想法?

谢谢!

连接一个LINQ (To SQL)查询

我会这样做

var intermediateQuery=
         from q in dc.Leads
         join sr in dc.SalesReps on q.SalesRepID equals sr.SalesRepID
         join co in dc.Companies on q.CompanyID equals co.CompanyID
         join or in dc.Origins on q.OriginID equals or.OriginID
         join pr in dc.Products on q.ProductID equals pr.ProductID
 select new { q.Ref, sr.Rep, q.Deposit, q.Sale, q.Title, q.Names, q.Surname,             q.HomePhone, q.WorkPhone, q.Mobile, q.Address, q.Suburb, q.County, q.Postcode, co.CompanyName, or.OriginName, pr.ProductName, q.Telemarket, q.Entered };

,然后根据用户输入

添加一些过滤器
if(SomeUserProductFilter)
  {
     var result = intermediateQuery.Where(p=>p.ProductName = 'UserProductName');
  }

不要担心这种方法会检索所有数据,然后在内存中过滤它。LINQ只在调用ToList(), ToArray()或在foreach循环中使用result

时才向数据库发送查询