连接LINQ(To SQL)查询

时间:2015-08-12 11:21:23

标签: c# linq linq-to-sql

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

在代码隐藏中,我想要这样的东西:

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

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

最后:

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上有几个类似的问题,但它们并不完全相同。< / p>

任何想法??

谢谢!

1 个答案:

答案 0 :(得分:3)

我会按以下方式进行

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循环中使用结果时才向数据库发送查询