C# 附加linq查询中条件所在的字符串
我想在LINQ实现同样的目标。与以下查询类似的内容C# 附加linq查询中条件所在的字符串,c#,entity-framework,linq-to-entities,C#,Entity Framework,Linq To Entities,我想在LINQ实现同样的目标。与以下查询类似的内容 string StrWhere = string.Empty; StrWhere = " AND ID =5"; String StrQuery ="SELECT * FROM CITY_MAS WHERE + StrWhere"; 可以使用动态Linq动态添加条件 请参见您可以使用DynamicIQ(也适用于LINQ to SQL)-请参见-或者可以使用以下方法: ObjectQuery包含允许定义字符串自定义谓词的Where方法。因此,您
string StrWhere = string.Empty;
StrWhere = " AND ID =5";
String StrQuery ="SELECT * FROM CITY_MAS WHERE + StrWhere";
可以使用动态Linq动态添加条件
请参见您可以使用DynamicIQ(也适用于LINQ to SQL)-请参见-或者可以使用以下方法:
ObjectQuery
包含允许定义字符串自定义谓词的Where
方法。因此,您的查询可以按如下方式重新编写:
var result = from c in db.CITY_MAS
where + StrWhere
select new { c.ID,c.Name)
在where子句中,it
引用当前对象/表-类似于c#中的this
。objSet
是一个ObjectSet
(继承自ObjectQuery
)
根据具体情况,无论是使用ObjectContext
还是使用DbContext
到objSet
的方法都不同:
- 对象上下文
对象上下文中
城市
已经是对象集
,因此不需要实际的额外操作,因此:
var strWhere = "it.ID = 5";
var result = objSet.Where(strWhere);
- DbContext(EF代码优先)
CITY
是一个DbSet
和所述的覆盖,其中
方法不可用。但是,每个DbContext
都有一个底层ObjectContext
,可以用来执行一些更复杂的查询。您只需访问它,然后创建ObjectSet
:
var objSet = db.CITY;
//假设:使用System.Data.Entity.Infrastructure;
var var objContext=((IObjectContextAdapter)ctx).db;
var objSet=objContext.CreateObjectSet();
有关其他用途,请参见。
有关对象集的完整文档。其中可以找到方法
// assuming: using System.Data.Entity.Infrastructure;
var var objContext = ((IObjectContextAdapter)ctx).db;
var objSet = objContext.CreateObjectSet<CITY>();