Linq 获取 Distinct ToDictionary

JoB*_*oBo 1 c# linq lambda dictionary distinct

需要帮助才能仅根据 i.Code 选择/获取不同的条目。有重复项,因此我的表达式中出现错误“已添加具有相同键的项目。

 var myDictionary = dbContext.myDbTable
            .Where(i => i.shoesize>= 4)
            .OrderBy(i => i.Code)              
            .ToDictionary(i => i.Code, i => i);
Run Code Online (Sandbox Code Playgroud)

已尝试以不同的组合以及它们本身使用 Select 和/或 Distinct,但仍然遇到相同的错误

var myDictionary= dbContext.myDbTable
            .Where(i => i.shoesize>= 4)
            .OrderBy(i => i.Code)
            //.Select(i => i)
            //.Distinct()
            .ToDictionary(i => i.Code, i => i);
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?C#

更新:如果有多个具有相同代码的对象,我只想将第一个对象(具有该特定代码)添加到 myDictionary 中。

hal*_*ldo 6

您可以分组Code并选择每个组中的第一项(相当于不同的):

var myDictionary = dbContext.myDbTable
            .Where(i => i.shoesize >= 4)      // filter
            .GroupBy(x => x.Code)             // group by Code
            .Select(g => g.First())           // select 1st item from each group           
            .ToDictionary(i => i.Code, i => i);
Run Code Online (Sandbox Code Playgroud)

您不需要OrderBy因为Dictionarys 代表无序集合。如果你需要一本有序的字典,你可以使用SortedDictionary.