C# 附加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方法。因此,您

我想在LINQ实现同样的目标。与以下查询类似的内容

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>();