【发布时间】:2013-03-18 15:13:37
【问题描述】:
在 LINQ 中,可以按如下方式逐步构建 LINQ 查询:
var context = new AdventureWorksDataContext();
// Step 1
var query = context.Customers.Where(d => d.CustomerType == "Individual");
// Step 2
query = query.Where(d => d.TerritoryID == 3);
上述查询将产生一个等效的 SQL 语句,其中包含一个由 AND 逻辑运算符组合在一起的两个谓词组成的 WHERE 子句,如下所示:
SELECT * FROM Customers WHERE CustomerType = 'Individual' AND TerritoryID = 3
是否可以构建一个 LINQ 查询以生成等效的 SQL 语句 progressively,从而使生成的查询具有 WHERE 子句,其中谓词通过 OR 逻辑运算符组合在一起,如下所示?
SELECT * FROM Customers WHERE CustomerType = 'Individual' OR TerritoryID = 3
【问题讨论】:
-
为什么不
Where(d => d.TerritoryID == 3 || CustomerType = 'Individual');? -
@CuongLe:在某些情况下,您需要逐步构建查询。正如我在上面演示的那样,LINQ 为您提供了这种能力,并且使用 AND 逻辑运算符组合了生成的谓词。我正在寻求的是一种做同样的方式,但使用 OR 逻辑运算符组合谓词