Я использую Entity Framework 4.
Как я могу выполнить универсальное предложение Where 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);
}
На данный момент я жестко запрограммировал идентификатор языка == 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. Это не работает.