Linq中有没有一种方法可以用来构建类似".where(a=1)or(a=2)"这样的SQL字符串?

推荐答案

当然可以在WHERE子句(扩展方法)中完成.但是,如果需要动态构建复杂查询,则可以使用PredicateBuilder.

 var query = collection.Where( c => c.A == 1 || c.B == 2 );

或使用PredicateBuilder

 var predicate = PredicateBuilder.False<Foo>();
 predicate = predicate.Or( f => f.A == 1 );
 if (allowB)
 {
    predicate = predicate.Or( f => f.B == 1 );
 }

 var query = collection.Where( predicate );

.net相关问答推荐

DI通过对象的接口而不是实际类型来解析服务

节省用户在整个应用程序中使用的Flutter

在PowerShell中,XML子对象和属性是对象属性.它怎麽工作?

CurrentCulture、InvariantCulture、CurrentUICulture 和 InstalledUICulture 之间的区别

如何使用 C# 中的代码更改网络设置(IP 地址、DNS、WINS、主机名)

我可以从我的应用程序中抛出哪些内置 .NET 异常?

是否可以模拟 .NET HttpWebResponse?

指定的版本字符串不符合要求的格式 - major[.minor[.build[.revision]]]

生产代码中的 System.Diagnostics.Debug.WriteLine

如何在 C# 4.0 中使任务进入睡眠状态(或延迟)?

Automapper:使用 ReverseMap() 和 ForMember() 进行双向映射

获取类型的默认构造函数的最有效方法

.NET - 实现捕获所有异常处理程序的最佳方法是什么

为什么 C# 不推断我的泛型类型?

使用 C# 设置全局热键

如何正确和完全关闭/重置 TcpClient 连接?

如何获得 Bin 路径?

如何从文件中删除单个属性(例如只读)?

如何从 WCF REST 方法返回自定义 HTTP 状态代码?

通过继承扩展枚举