簡體   English   中英

C#字典如何從帶有單個鍵的重復值的分隔字符串列表中添加數據到字典

[英]c# dictionary how to add data from a delimited list of strings with repeated values for a single keyinto a dictionary

我正在嘗試從字符串列表創建一個字典,其中每個字符串都包含定界符分隔的值。 有很多重復的值,所以我需要一個帶有多個值的鍵

我已經嘗試創建Dictionary<string, List<string>>但這不起作用

每個字符串就像

values = Man: rev
sum:2
Man: rev2
sum:2

值是字符串列表

var d = new Dictionary<string, List<string>>();

        foreach(var l in values)
        {
            var b = l.Split(':');
            var k = b.ElementAtOrDefault(0);

            if (!d.ContainsKey(k))
                d.Add(k, new List<string>());

            d[k].Add(l);
        }

當我嘗試使用上述方法搜索字典時,無法檢索特定鍵的值

根據提供的注釋,我建議使用以下結構(我目前無法測試代碼,但可以在需要時對其進行修復):

Dictionary<string,string> result = values
   .Select(v => v.Split(new char[] {':'}, StringSplitOptions.RemoveEmptyEntries)
   .ToLookup(arr => arr.FirstOrDefault(), arr => String.Concat(arr.Skip(1))
   .ToDictionary(g => g.Key, g => String.Join(", ", g.Select(i => i.Trim());

說明:首先選擇進行拆分; ToLookup使用第一個元素作為鍵並使用值字符串的其余部分作為項目來創建>結構(在原始問題中添加了整個字符串-我不確定這是否是意圖); 然后,ToDictionary將List轉換為字符串(基於注釋,因為所需的輸出似乎是Distionary)。

暫無
暫無

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

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