【发布时间】:2016-12-03 19:25:40
【问题描述】:
我有一个列表,其中包含这样的项目:
{
Answer: "test answer",
FaqTopicName :"General",
Question: "test question",
SortOrder: 0
},
{
Answer: "...",
FaqTopicName :"General",
Question: "...",
SortOrder: 1
},
... (repeated)
我希望重组列表,使其现在包含分组在一个对象内的每个列表项。结果对象将如下所示,并将包含属性名称“items”= [] 下具有相同 FaqTopicName 的所有项目。
我希望最终得到的数据格式:
{
topicName: "General",
items: {
Answer: "test answer",
Question: "test question",
SortOrder: 0
},
{
Answer: "...",
Question: "...",
SortOrder: 1
}
}
这是我尝试过的,但结果不正确,也无法通过 JavaScriptSerializer() 运行:
List<FaqQuestionAnswer> allFaqItemsInSelectedSytem = faqController.GetAllFaqItemsForSystem(out errors);
var groupedData = (from qaItem in allFaqItemsInSelectedSytem
group qaItem by qaItem.FaqTopicName
into questionsAnswersGroupedDataset
select questionsAnswersGroupedDataset).Distinct().ToDictionary(items => new { title = items.Key.ToString(), items = items.ToList() });
在调试器中导致:
[0] = {[{ title = EBooks, items = System.Collections.Generic.List1[JPay.Base.FaqQuestionAnswer] }, System.Linq.Lookup2+Grouping[System.String,JPay.Base.FaqQuestionAnswer]]}
但是当我通过 JSON 转换器运行它时,它会引发类型错误:
键入'System.Collections.Generic.Dictionary2[[<>f__AnonymousType02[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=XXXXXXXXXXXX],[System.Collections.Generic.List1[[Base.FaqQuestionAnswer, Version=1.0.6180.30742, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=XXXXXXXXXXXX]], tttwebsite, Version=1.0.6181.25360, Culture=neutral, PublicKeyToken=null],[System.Linq.IGrouping 2[[System.String,mscorlib,版本=4.0.0.0,文化=中性,PublicKeyToken=XXXXXXXXXXXXX],[ttt.Base.FaqQuestionAnswer,tttBase,版本=1.0.6180.30742,文化=中性,PublicKeyToken=null]],系统.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=XXXXXXXXXXXXXXXXX]]' 不支持字典的序列化/反序列化,键必须是字符串或对象。
感谢您的帮助。
【问题讨论】:
-
当你说“结果不正确”时,你得到的是什么数据格式?
标签: c# algorithm linq data-structures