ЛЕВЫЙ НАРУЖНЫЙ РЕЙТИНГ на два словаряиспользуя LINQ - PullRequest
1 голос
/ 08 октября 2019

Я пытаюсь выполнить левое внешнее соединение с двумя Dictionary<int, string> объектами. Это объекты:

            var leftSet = new Dictionary<int, string>()
            {
                { 1, "Michael"},
                { 2, "John" },
                { 3, "Bill" }
            };

            var rightSet = new Dictionary<int, string>()
            {
                { 1, "Another Michael"},
                { 3, "Another Bill" },
                { 4, "Tony" }
            };

Я пишу запрос так:

var queryResult = from leftElements in leftSet
                  join rightElements in rightSet
                     on leftElements.Key equals rightElements.Key into joinResult
                  from result in joinResult
                  select new { leftElements.Key, result.Value };

Это приводит к внутреннему соединению вместо левого внешнего соединения, которое я хотел. Я знаю, что мне нужно захватить leftElements.Key, прежде чем оно станет частью joinResult, но тогда я не знаю, как написать оператор select впоследствии.

Любая помощь будет принята, спасибо.

1 Ответ

3 голосов
/ 08 октября 2019

Измените

 from result in joinResult

на:

 from result in joinResult.DefaultIfEmpty()

, чтобы выполнить левое внешнее соединение.

Все остальное может остаться прежним.

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