Я использую Entity Framework 4.Как я могу выполнить Generic Where Lambda Clause.?
У меня есть много сущностей, которым нужен один и тот же Where Query.
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);
}
На данный момент я жестко закодированИдентификатор языка == 1, который будет из пользовательского сеанса, чтобы сделать его динамичным.Это было бы очень полезно, если бы я мог напрямую вызывать GetLmbLang () непосредственно в предложении Where.
var ViewModel = _db.Suppliers.Select(model => new
{
model,
SupType = _db.SupplierTypeTexts.Where(a => GenericGetLmbLang())
});
------ ОБНОВЛЕНИЕ -------- Вот что я пытаюсь и ничего не работает.Мой базовый класс
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.Это не работает