您可以使用 DynamicLINQ(也可以与 LINQ to SQL 一起使用) - 请参阅Maarten 的帖子- 或者您可以使用以下方法:
ObjectQuery<T>
包含一个Where
允许定义字符串自定义谓词的方法。因此,您的查询可以重写如下:
var strWhere = "it.ID = 5";
var result = objSet.Where(strWhere);
在 where 子句中,it
指的是当前对象/表 - 类似于this
c#。是objSet
一个ObjectSet<CITY>
(继承自ObjectQuery<T>
)。
视情况而定,您使用 anObjectContext
或 aDbContext
的方式会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>();
另请参阅此博客文章以了解其他用途。ObjectSet<T>.Where
可以在此处找到有关该方法的完整文档。