簡體   English   中英

沒有Foreach的C#List to Dictionary [ERROR]

[英]C# List to Dictionary without Foreach [ERROR]

我有這門課

class Person
{
    public string idCard { get; set; }
    public string name { get; set; }
    public DateTime birthDate { get; set; }
}

和一個對象列表

List<Person> list = new List<Person>(){
    new Person(){name="John",idCard="123",birthDate=new DateTime(1990,11,13)},
    new Person(){name="Paul",idCard="321",birthDate=new DateTime(1988,5,16)},
    new Person(){name="Clara",idCard="213",birthDate=new DateTime(1993,7,21)}
};

當我想將該列表轉換為沒有foreach的字典時,其中一個對象的屬性是關鍵(我已經搜索了所有在Web中執行此操作的方法)

Dictionary<string, Person> personDict = new Dictionary<string,Person>();
personDict = list.GroupBy(x=>x.idCard).ToDictionary<string, Person>(x => x.Key,x=>x);

我還有一些錯誤

錯誤1實例參數:無法從'System.Collections.Generic.IEnumerable>'轉換為'System.Collections.Generic.IEnumerable'G:\\ SHUBA \\ Learning \\ Experiments \\ TestProgram \\ TestProgram \\ Program.cs 25 26 TestProgram Error 4 Argument 3:無法從'lambda表達式'轉換為'System.Collections.Generic.IEqualityComparer'G:\\ SHUBA \\ Learning \\ Experiments \\ TestProgram \\ TestProgram \\ Program.cs 25 95 TestProgram錯誤3參數2:無法從'lambda表達式'轉換到'System.Func'G:\\ SHUBA \\ Learning \\ Experiments \\ TestProgram \\ TestProgram \\ Program.cs 25 83 TestProgram Error 2'System.Collections.Generic.IEnumerable>'不包含'ToDictionary'的定義和最佳擴展名方法重載'System.Linq.Enumerable.ToDictionary(System.Collections.Generic.IEnumerable,System.Func,System.Collections.Generic.IEqualityComparer)'有一些無效的參數G:\\ SHUBA \\ Learning \\ Experiments \\ TestProgram \\ TestProgram \\ Program .cs 25 26 TestProgram

有誰知道解決方案?

我想我沒事。

分組是沒有必要的, ToDictionary為你做。 這應該很簡單:

var personDict = list.ToDictionary(p => p.idCard);

順便說一句。 沒有必要聲明變量personDict並在第一步中將其分配給空字典並稍后重新分配一行。

這應該給你一個字典,其中鍵是idCard ,值是Person對象。

Dictionary<string, Person> personDict = list.ToDictionary(x => x.idCard, y => y);

由於我們IdCard值作為字典鍵,因此如果列表中有多個具有相同idCard值的項,則ToDictionary方法調用將拋出ArgumentException

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM