string StrWhere = string.Empty;
StrWhere = " AND ID =5";
String StrQuery ="SELECT * FROM CITY_MAS WHERE + StrWhere";
我想在LINQ中实现相同的目标。以下查询的内容...
var result = from c in db.CITY_MAS
where + StrWhere
select new { c.ID,c.Name)
答案 0 :(得分:0)
您可以使用Dynamic Linq动态添加条件。
答案 1 :(得分:0)
您可以使用DynamicLINQ(也适用于LINQ to SQL) - 请参阅Maarten's post - 或者您可以使用以下方法:
ObjectQuery<T>
包含Where
方法,允许定义字符串自定义谓词。因此,您的查询可以重写如下:
var strWhere = "it.ID = 5";
var result = objSet.Where(strWhere);
在where子句中,it
引用当前对象/表 - 类似于c#中的this
。 objSet
是ObjectSet<CITY>
(继承自ObjectQuery<T>
)。
根据您使用ObjectContext
还是DbContext
,取决于objSet
的方式不同:
在ObjectContext
CITY
已经是ObjectSet<CITY>
,所以不需要真正的额外操作,所以:
var objSet = db.CITY;
此处CITY
是DbSet<CITY>
,并且Where
方法的描述覆盖不可用。但是,每个DbContext
都有一个基础ObjectContext
,您可以使用它来执行更复杂的查询。您只需要访问它然后创建ObjectSet
:
// assuming: using System.Data.Entity.Infrastructure;
var var objContext = ((IObjectContextAdapter)ctx).db;
var objSet = objContext.CreateObjectSet<CITY>();
另请参阅this blog post了解其他用途。
可以找到ObjectSet<T>.Where
方法的完整文档here。