在Linq中动态添加谓词

pal*_*now 2 c# linq ado.net

在Ado.NET世界中,我可以拥有如下代码

Void SomeMethod(bool flag)
{
String Query = “ SELECT * FROM Products WHERE CategoryID  = 125”;
If ( flag == true )
  Query += “ AND Price > 25”
....
}
Run Code Online (Sandbox Code Playgroud)

在Linq世界中,我可以动态添加这些额外的过滤器吗?

Wik*_*hla 7

var query = context.Products.Where( p => p.CategoryID == 125 );
if ( flag )
   query = query.Where( p => p.Price > 25 );
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 5

if (someFlag)
    query = query.Where(p => p.Price > 25);
Run Code Online (Sandbox Code Playgroud)

  • 不,查询表达式是懒惰的.在强制它产生输出(即通过调用`ToList()`)之前,不会执行查询. (2认同)