В базе данных приложения, которое я использую, есть запись с полем «Дата». В многих местах в коде мы должны преобразовать это в финансовый год для группировки, выбора и фильтрации. Вот несколько примеров того, как может выглядеть запрос:
var query = from r in DB.records
let fy = r.Date.Month >= 10 ? r.Year + 1 : r.Year
where fy = 2010
select r;
Теперь я знаю, что мог бы написать метод Expression для использования того же фильтра , но что, если я хочу использовать его для выбора и группировки? Я не хочу писать вторую строку снова и снова во всех запросах. Было бы неплохо просто иметь возможность сделать:
var query = from r in DB.records
let fy = r.Date.GetFY()
where fy = 2010
group r by fy into g
select g.Count();
Таким образом, разные клиенты могут иметь разные определения финансового года и тому подобное, и все они могут быть определены в одном и том же месте. Есть какой-либо способ сделать это? Написание обычного метода GetFY просто вызывает исключение «Не могу перевести на SQL» (или как там на самом деле). Очевидно, что на каком-то уровне это можно перевести в SQL, я просто не знаю, можно ли простым способом воссоздать повторное использование LINQ to SQL.
Заранее спасибо.