Я читал о динамических LINQ и построителях предикатов. Я немного неясен и немного запутан в части бэкэнд-логистики. Я пытаюсь предложить вариант отчетов / расширенного поиска для одного из моих приложений, включая неприятный запрос groupwise-max.
Я могу легко собрать это вместе для программной фильтрации результатов, но из соображений производительности я бы предпочел, чтобы предложение where выполнялось на сервере SQL, а не в коде .net. Я не уверен, какие решения на самом деле выполняют предикаты в SQL, а не на стороне клиента / .NET. Вот пример того, что я хотел бы сделать с LINQ:
from fbd in db.FooBarDatas
join max_fbd in
(from fbd in db.FooBarDatas
group fbd by new { fbd.FooID, fbd.BarID } into grp
select new { MaxFooBarDataID = grp.Max(fbd => fbd.FooBarDataID }
)
on fbd.FooBarDataID equals max_fbd.MaxFooBarDataID
select new
{
FooBarDataID = fbd.FooBarDataID,
NormalizedPropertyName1 = fbd.Column1,
NormalizedPropertyName2 = fbd.Column2,
NormalizedPropertyName3 = fbd.Column3,
etc...
}
Так что это мой основной запрос. В конце я добавляю их все в объект данных общей ссылки, потому что многие данные, которые я хочу динамически извлечь из запроса, поступают из внешних таблиц, и я хочу, чтобы на них все ссылались как на прямые свойства.
Теперь я хочу, чтобы я мог добавить к этому запросу целую кучу условий предложения where для генерации значимого отчета. Предложение where будет отличаться в зависимости от параметров, заданных пользователем. Набор записей довольно большой, поэтому, опять же, я ищу способ выполнить фильтрацию на стороне SQL.
Может ли кто-нибудь привести простой пример того, как этого можно достичь? Заранее спасибо за любую помощь.