使用LINQ从定界字符串列表构建字典 - c#

我有一个看起来像这样的字符串列表:

abc|key1|486997
def|key1|488979
ghi|key2|998788 
gkl|key2|998778
olz|key1|045669

我如何使用LINQ和ToDictionary生成看起来像的Dictionary<string, List<string>>

key1 : { abc|key1|486997, def|key1|488979, olz|key1|045669 }
key2 : { ghi|key2|998788, gkl|key2|998778 }

基本上,我希望能够提取第二个元素作为关键字,并使用ToDictionary()一次创建字典。

我目前正在这样做..

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

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

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

                d[k].Add(l);
            }

我已经看到了从单个带分隔符的值字符串构建字典的问题,但是我
想知道从分隔字符串列表开始时是否有一种优雅的方法可以做到这一点。

参考方案

您还可以一次将其转换为查找(与Dictionary<K,IEnumerable<V>>非常相似):

var list = new []
{
"abc|key1|486997",
"def|key1|488979",
"ghi|key2|998788",
"gkl|key2|998778",
"olz|key1|045669"
};

var dict = list.GroupBy(x => x.Split('|')[1])
               .ToDictionary(x => x.Key, x => x.ToList());

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

LINQ to XML语法 - c#

我有一个简单的POCO类,用于保存从XML文件提取的数据,该XML文件定义如下:public class Demographics { public string FirstName { get; set; } public string LastName { get; set; } public string MiddleName { get; set; …

用另一个字典初始化一个Python字典 - python

我想初始化一个字典,并始终为每个键分配一个空的数据结构,然后再使用它。这是我想要的结果和行为:data = { "record" : { "fields_array" : [], "df" : pd.DataFrame(), "df_fields" : pd.DataFrame(…

每个文件合并后添加换行 - python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…