C# 将列表转换为字典<;字符串,字符串[]>;

C# 将列表转换为字典<;字符串,字符串[]>;,c#,.net,C#,.net,我有一个简单的自定义对象: class CertQuestion { public string Field {get;set;} public string Value {get;set;} } 随后,我发现自己在一些代码中有一个列表。我正试图找出如何将一系列问题格式化到一个对应的字典中,并将相似的字段名分组在一起。例如,给定以下列表: List<CertQuestion> certQuestions = new List<CertQuest

我有一个简单的自定义对象:

class CertQuestion
{
    public string Field {get;set;}
    public string Value {get;set;}
}
随后,我发现自己在一些代码中有一个列表。我正试图找出如何将一系列问题格式化到一个对应的字典中,并将相似的字段名分组在一起。例如,给定以下列表:

        List<CertQuestion> certQuestions = new List<CertQuestion>()
            {
                new CertQuestion("Key", "Value1"),
                new CertQuestion("Key", "Value2"),
                new CertQuestion("Key2", "Value"),
                new CertQuestion("Key2", "Value2")
            };

将问题按字段分组,然后选择“键”,然后选择“值”,将其转换为字典。值成为分组的列表

certQuestions.GroupBy(c => c.Field)
             .ToDictionary(k => k.Key, v => v.Select(f => f.Value).ToList())
或对于阵列:

certQuestions.GroupBy(c => c.Field)
             .ToDictionary(k => k.Key, v => v.Select(f => f.Value).ToArray())
根据评论中的问题进行编辑:

class CertTest 
{
    public string TestId {get;set;}
    public List<CertQuestion> Questions {get;set;}
}
var certTests = new List<CertTest>();

将问题按字段分组,然后选择“键”,然后选择“值”,将其转换为字典。值成为分组的列表

certQuestions.GroupBy(c => c.Field)
             .ToDictionary(k => k.Key, v => v.Select(f => f.Value).ToList())
或对于阵列:

certQuestions.GroupBy(c => c.Field)
             .ToDictionary(k => k.Key, v => v.Select(f => f.Value).ToArray())
根据评论中的问题进行编辑:

class CertTest 
{
    public string TestId {get;set;}
    public List<CertQuestion> Questions {get;set;}
}
var certTests = new List<CertTest>();

您需要一个逗号分隔的值列表,可以这样做:

var dict = certQuestions.GroupBy(c => c.Field)
             .ToDictionary(k => k.Key, v => String.Join(", ", v.Select(x => x.Value)))
实例:


(你应该考虑你到底想要的是一个<代码>数组< <代码>还是<代码>列表< /代码> -查看其他答案)

你的要求是一个逗号分隔的值列表,可以这样做:

var dict = certQuestions.GroupBy(c => c.Field)
             .ToDictionary(k => k.Key, v => String.Join(", ", v.Select(x => x.Value)))
实例:


(你应该考虑你到底想要的是一个<代码>数组> <代码>还是>代码>清单>代码>查看其他答案)

你想要一个<代码>字典<代码>吗?那么你在创建这本字典时遇到了什么问题?<代码> CurtQuales。ToLookup(x= > x.field,x= > x.Valuy);
那么你想要一本
词典
?那么你在创建这本词典时遇到了什么问题?
certQuestions.ToLookup(x=>x.Field,x=>x.Value)不太正确,这会给你一本
字典
。您需要
选择
。类似于
.ToDictionary(k=>k.Key,v=>v.Select(cq=>cq.Value).ToList())
是的,您是对的,在所需的结果中错过了字符串类型与CertQuestion类型。在有人解释了如何做之后,它看起来总是那么简单。出于好奇,如果我有一个对象列表,而每个对象都有一个列表,那么我如何将所有对象的列表字段打包到一个字典中呢?不完全正确,这将为您提供一个
字典。您需要
选择
。类似于
.ToDictionary(k=>k.Key,v=>v.Select(cq=>cq.Value).ToList())
是的,您是对的,在所需的结果中错过了字符串类型与CertQuestion类型。在有人解释了如何做之后,它看起来总是那么简单。出于好奇,如果我有一个对象列表,而每个对象都有一个列表,我怎么能将所有对象的列表字段封装到一个字典中呢?