连接 LINQ(到 SQL)查询

Concatenating a LINQ (To SQL) Query

我正在构建一个 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 上有几个类似的问题,但它们并不完全相同.

有什么想法吗??

谢谢!

我会按以下方式进行

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');
  }

不要担心这种方法会检索所有数据并在内存中对其进行过滤。仅当您调用 ToList()、ToArray() 或在 foreach 循环中使用结果时,LINQ 才会向数据库发送查询