У меня есть запрос:
public IQueryable GetOrder(int id)
{
using (Context = new MyEntities())
{
IQueryable query = Context.Orders
.Include("Customers")
.Include("Products")
.Include("OrderLines")
.Where(o => o.OrderID == id);
return query;
}
}
Теперь я хочу извлечь базовый запрос (все без предложения .Where
), чтобы я мог использовать его в других методах. Я попробовал это:
private IQueryable GetIncludes(MyEntities context)
{
return context.Orders
.Include("Customers")
.Include("Products")
.Include("OrderLines");
}
public IQueryable GetOldOrders()
{
using (Context = new MyEntities())
{
DateTime ninetyDaysAgo = new DateTime(DateTime.Now.AddDays(-90));
IQueryable query = GetIncludes(Context);
query = query.Where(o => o.OrderDate < ninetyDaysAgo);
return query;
}
}
но компилятор говорит мне Cannot convert lambda expression to type 'string' because it is not a delegate type
.
Я посмотрел на Невозможно преобразовать лямбда-выражение в тип 'string', потому что это не тип делегата и могу сообщить, что я использую System.Linq
(и System.Linq.Dynamic
) и System.Data.Entity
. System.Data.Entity
серым в VS.
Как создать IQueryable
, к которому я могу добавить предложение .Where
после его создания?