Как мне объединить список дат с таблицей базы данных в сущности? - PullRequest
0 голосов
/ 01 мая 2018

У меня есть список дат начала каждой недели в году.

List<DateTime> yearWeeks = GetAllDaysOfWeekForYear(DateTime.Now.Year, DayOfWeek.Monday);

Я хочу перечислить их рядом с моей таблицей БД:

db.planner.Where(a => a.EmployeeId == CustomerId && a.Year == DateTime.Now.Year).Join(yearWeeks, c => c.WeekStarting, d => d.ToLongDateString(), (c, d) => new
        {
            yearDate = d.ToLongDateString(),
            c.WeekStarting
        }).ToList();

Это выдает ошибку

Аргументы типа для метода Queryable.Join не могут быть выведены из использование.

Как мне присоединиться к ним вместе с linq?

1 Ответ

0 голосов
/ 01 мая 2018

Join принимает 4 параметра (первая перегруженная версия): Первый - это последовательность, к которой нужно присоединиться (yearweeks), второй - это ключ из первой последовательности (WeekStarting), третий параметр - это ключ из второй последовательности, а четвертый параметр принимает лямбду для выбора подходящих элементов. :

Функция для создания результирующего элемента из двух совпадающих элементов.

DatesDeclared.planner = db.planners.Where(a => a.EmployeeId == 2 && a.Year == DateTime.Now.Year).Join(yearweeks, c => c.WeekStarting, d => d.Value, (c, d) => new
    {
        c.WeekStarting,
        d.Value
    }).ToList();

Синтаксис запроса более удобен для чтения, чем лямбда-синтаксис, и проще:

var data = from p in planners
                   join w in yearweeks on p.WeekStarting equals w.Value
                   select new
                   {
                       p.WeekStarting,
                       w.Value
                   };

Не зная типа, который вы возвращаете, я не могу знать, какой тип DatesDeclared.planner, поэтому приведенный выше код возвращает список анонимного типа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...