我试图用两个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语句。

任何帮助,将不胜感激,谢谢。

最佳答案

更改

 from result in joinResult


至:

 from result in joinResult.DefaultIfEmpty()


完成左外部联接。

其他所有内容都可以保持不变。

关于c# - 使用LINQ在两个Dictionary <int,string>上向左连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58291916/

10-11 18:08