У меня следующая проблема.У меня есть класс, который создается с помощью запроса LINQ to EF.Класс имеет сложное поле типа string, в котором выполняется фильтрация и сортировка.Сложное поле работает так:
var result = _context.MyTable.Select(x=> new Model
{
...some not interesting properties
Number =
x.Id == 0 || !x.Created.HasValue ? null : SqlFunctions.DateName("year", x.Created) +
SqlFunctions.Replicate("-", 2 - SqlFunctions.StringConvert((double)x.Created.Value.Month).TrimStart().Length) +
SqlFunctions.Replicate("0", 2 - SqlFunctions.StringConvert((double)x.Created.Value.Month).TrimStart().Length) +
SqlFunctions.StringConvert((double)x.Created.Value.Month).TrimStart() +
SqlFunctions.Replicate("-", 2 - SqlFunctions.StringConvert((double)x.Created.Value.Month).TrimStart().Length) +
SqlFunctions.Replicate("0", 2 - SqlFunctions.DateName("dd", x.Created).Trim().Length) +
SqlFunctions.DateName("dd", x.Created).Trim()
...more boring properties
});
Теперь возникает вопрос - как извлечь хотя бы эту неуклюжую часть, которая преобразует обнуляемую дату в строку «гггг-ММ-дд».Было бы здорово, если бы я мог назвать это так:
var result = _context.MyTable.Select(x=> new Model
{
...some not interesting properties
Number =
x.Id == 0 || !x.Created.HasValue ? null : MyCustomConvert(x.Created)
...more boring properties
});
Это должно быть сделано с помощью некоторого метода, возвращающего выражение, но у меня слишком мало опыта в создании выражений для этого.Любая помощь?