У меня есть список, который содержит элементы, как это:список Restructure элементы в группы
{
Answer: "test answer",
FaqTopicName :"General",
Question: "test question",
SortOrder: 0
},
{
Answer: "...",
FaqTopicName :"General",
Question: "...",
SortOrder: 1
},
... (repeated)
Я желаю, чтобы перестроить список, так что он теперь содержит каждый элемент списка сгруппированных внутри объекта. Объект результата будет выглядеть следующим образом и будет содержать все элементы, которые имеют одно и то же имя FaqTopicName под названием «items» = [].
Формат данных Я хочу, чтобы в конечном итоге с:
{
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] = {[{название = электронные книги, товар = System.Collections.Generic.List 1[JPay.Base.FaqQuestionAnswer] }, System.Linq.Lookup
2 + Группировка [System.String, JPay.Base.FaqQuesti onAnswer]]}
, но когда я запускаю его через конвертер JSON он выдает ошибки типа:
Тип «System.Collections.Generic.Dictionary 2[[<>f__AnonymousType0
2 [[System.String, mscorlib, Version = 4.0.0.0 , Culture = neutral, PublicKeyToken = XXXXXXXXXXX], [System.Collections.Generic.List 1[[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, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = XXXXXXXXXXXXX], [ttt.Base.FaqQuestionAnswer, tttBase, Version = 1.0.6180.30742, Culture = neutral, PublicKeyToken = null]], System.Core, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = XXXXXXXXXXXXXXXXX]] 'не поддерживается для сериализации/десериализации словаря, ключей должны быть строками или объектами.
Спасибо за помощь.
Когда вы говорите «это не получается правильно», какой формат данных вы получаете вместо этого? –