连接一个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上有几个类似的问题,但它们不完全是一回事。
有什么想法?
谢谢!
我会这样做
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