соединение linq с sql для нескольких столбцов с использованием лямбда-ошибки

Я попытался перевести этот запрос, следуя приведенному ниже примеру: linq to sql join on multiple columns using lambda

from tabA in this.context.TabA
join tabB in this.context.TabB on
new
{
   field1 = tabA.Soc,
   field2 = tabA.ID
}
equals new
{
   field1 = TabB.Soc,
   field2 = TabB.Code
}
select tabA;

с этим:

var query= this.context.TabA.Join(
    this.context.TabB,
    s => new { s.Soc, s.ID },
    h => new { h.Soc, h.Code },
    (s, h) => s);

Но Visual Studio Intellisense сообщает об этой ошибке, которую я не понял ("Присоединиться" сигнализирует мне красным): Visual Studio error

Всего 1 ответ


Имена анонимных типов должны совпадать. В первом запросе вы дали им имена field1 и field2. Второй запрос будет использовать Soc ID на первом и Soc Code на втором, в то время как поле Soc будет соответствовать имени ID не будет соответствовать имени Code. Таким образом, синтаксис метода, эквивалентный синтаксису вашего запроса, на самом деле будет

var query= this.context.TabA.Join(
    this.context.TabB,
    s => new { field1 = s.Soc, field2 = s.ID },
    h => new { field1 = h.Soc, field2 = h.Code },
    (s, h) => s);

Но на самом деле вам нужно назвать только второе свойство анонимного класса, поскольку в обоих случаях оно примет имя Soc в качестве первого.


Есть идеи?

10000