LINQ: Как сделать JOIN, используя стиль метода расширения linq для нескольких полей? - PullRequest
5 голосов
/ 27 апреля 2011

В соединении ниже я хотел бы использовать несколько полей для объединения, а не только одно поле.

var join = group.Join(procSums, g => g.DeptID, ps => ps.key.deptID, (g, ps)...

Все найденные примеры используют для этого стиль запроса, и я могу 'T переведи это.

Спасибо!

Ответы [ 2 ]

9 голосов
/ 27 апреля 2011

Вам просто нужно зарегистрироваться на основе новых анонимных объектов:

// ClasID is a placeholder, it could be any property you'd like
var join = group.Join(procSums,
                      g => new { g.DeptID, g.UnitLoc, g.Proc },
                      ps => new 
                            { 
                              DeptID = ps.key.deptID, 
                              UnitLoc = ps.key.unitLoc,
                              Proc = ps.key.procName 
                            },
                      (g, ps) => new { g, ps });
1 голос
/ 27 апреля 2011

Вам необходимо передать лямбда-выражения, которые создают анонимные типы с полями.
Например:

group.Join(procSums, g => new { g.DeptID, g.OtherField }, ps => new { ps.key.deptID, ps.key.OtherField }, ...)

Анонимные типы должны точно соответствовать.

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