1
我使用实体框架4.
如何执行泛型Where Lambda子句。
如何创建通用lambda表达式。我的许多实体执行相同的Lambda表达式谓词
我有许多实体需要相同的地方查询。
public Func<SupplierTypeText, bool> GetLmbLang()
{
return (p => p.LangID == 1);
}
public Func<ProductText, bool> GetLmbLang()
{
return (p => p.LangID == 1);
}
public Func<CategoryText, bool> GetLmbLang()
{
return (p => p.LangID == 1);
}
我想有一个像
//public interface IRepository<T> : IRepository<T> where T : class
public Func<T, bool> GenericGetLmbLang()
{
return (p => p.LangID == 1);
}
就目前的通用方法,我硬编码语言ID == 1,这将是从用户会话,使之动态。
如果我可以直接在Where子句中直接调用GetLmbLang(),那将是非常有用的。
var ViewModel = _db.Suppliers.Select(model => new
{
model,
SupType = _db.SupplierTypeTexts.Where(a => GenericGetLmbLang())
});
------ UPDATE --------
下面是我尝试一切都停止工作。
我的基类
public class BaseGenericModel
{
public int LangID { get; set; }
public Func<BaseGenericModel, bool> GetLmbLang()
{
return (p => p.LangID == 1);
}
}
我的界面
public interface IBaseRepository<T> where T : BaseGenericModel
{
Func<T, bool> GetLmbLang();
}
public class BaseRepository<T> : IBaseRepository<T> where T : BaseGenericModel
{
public Func<T, bool> GetLmbLang()
{
return (p => p.LangID == 1);
}
}
我不能把这个仓库形成我SupplierTypeText,ProductText,CategoryText。这是行不通的。
我使用实体框架4.如何能我从BaseClass派生的SupplierTypeText,ProductText,CategoryText使用您的Generic GetLmbLang()方法。 – 2010-10-25 00:39:11
这些类SupplierTypeText,ProductText,CategoryText无法从BaseClass派生,因为它们已经从EntityObject派生出来 – 2010-10-25 02:51:55
然后让它们实现一个接口。 – 2010-10-25 06:05:06