Как фильтровать по части даты динамически - PullRequest
0 голосов
/ 06 мая 2019

Если я хочу построить определенное правило в динамическом запросе, где часть условия заявляет, что

в тот же месяц года

У меня есть следующий источник данных:

List<Excuse> li = new List<Excuse>();
li.Add(new Excuse { EmpNum = 3333, ExcuseDate = DateTime.Today, ExcuseDuration = new TimeSpan(0, 30, 0), ExcuseType = 0, Id = 1 });
li.Add(new Excuse { EmpNum = 3333, ExcuseDate = DateTime.Today.AddDays(1), ExcuseDuration = new TimeSpan(2, 30, 0), ExcuseType = 0, Id = 2 });
li.Add(new Excuse { EmpNum = 3333, ExcuseDate = DateTime.Today.AddDays(2), ExcuseDuration = new TimeSpan(2, 0, 0), ExcuseType = 0, Id = 3 });
li.Add(new Excuse { EmpNum = 2345, ExcuseDate = DateTime.Now, ExcuseDuration = new TimeSpan(0, 30, 0), ExcuseType = 0, Id = 4});

Как написать что-то подобное:

var langExp = "YEAR(ExcuseDate) = @1 AND MONTH(ExcuseDate) = @2 AND emp_num = @3";
var query1 = li.AsQueryable().Where(langExp, 2019,5,3333);

Я хочу, чтобы методы типа Year() or Month() или эквивалентный метод делали что-то подобное.

1 Ответ

2 голосов
/ 06 мая 2019

Это должно легко работать с Dynamic LINQ:

var langExp = "ExcuseDate.Year = @0 && ExcuseDate.Month = @1 && EmpNum = @2";
var query1 = li.AsQueryable().Where(langExp, 2019, 5, 3333);
...