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类型。在有人解释了如何做之后,它看起来总是那么简单。出于好奇,如果我有一个对象列表,而每个对象都有一个列表,我怎么能将所有对象的列表字段封装到一个字典中呢?