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