Подтвердить что ты не робот

LINQ Lambda Join Error - не может быть выведено из использования

У меня были проблемы с присоединением к двум DbSets и продолжали получать "не может быть ошибочной ошибкой". Я изо всех сил пытался найти решение, поэтому я решил поделиться своим простым ответом. Есть несколько отличных сообщений от Джона Скита и других, но большинство ответов были над моей головой.

Вот код, который вызывал у меня проблемы:

using(var db = new SomeDataContext())
    {
    db.DemandData
        .Where(demand=> demand.ID == SearchID)
        .Join(db.CUST_ORDER_LINE,
            supply=> new { supply.LINE, supply.SALES_ORDER_ID },
            demand=> new { demand.LINE_NO, demand.CUST_ORDER_ID },
            (supply, demand) => new { custOrderLineReturn = demand })
        .Select(s => s.custOrderLineReturn )
        .ToList();
    }
4b9b3361

Ответ 1

Я сделал это соединение столько раз, что не мог понять, почему это не сработает, пока я не найду сообщение от Джастина Нисснера здесь, в котором говорится, что "Имена свойств в анонимных типах (а также их типы) должны точно соответствовать." Это приведет меня к этому коду:

using(var db = new SomeDataContext())
    {
  return db.DemandData
        .Where(demand=> demand.ID == SearchID)
        .Join(db.CUST_ORDER_LINE,
            supply=> new { LINE_NO = supply.LINE, CUST_ORDER_ID = supply.SALES_ORDER_ID },
            demand=> new { demand.LINE_NO, demand.CUST_ORDER_ID },
            (supply, demand) => new { custOrderLineReturn = demand })
        .Select(s => s.custOrderLineReturn )
        .ToList();
    }

В шестой строке я добавил переменные LINE_NO = и CUST_ORDER_ID =, которые соответствуют именам полей в строке 7.