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