我有以下物件串列:
[
{
"example": "cat",
"categories": ["group1", "group2", "group3"]
},
{
"example": "dog",
"categories": ["group1", "group3", "group4"]
},
{
"example": "cow",
"categories": ["group1"]
}
]
我想將其轉換為這種格式:
[
{
"category": "group1",
"examples": ["cat", "dog", "cow"]
},
{
"category": "group2",
"examples": ["cat"]
},
{
"category": "group3",
"examples": ["cat", "dog"]
},
{
"category": "group4",
"examples": ["dog"]
}
]
這是我的課:
public class Animals
{
public string Example { get; set; }
public List<string> Categories { get; set; }
}
public class Groups
{
public string Category { get; set; }
public List<string> Examples { get; set; }
}
我如何使用 linq 做到這一點?
uj5u.com熱心網友回復:
用于SelectMany展平和GroupBy再次構建組:
var query = animalList
.SelectMany(a => a.Categories.Select(c => (Animal: a, Category: c)))
.GroupBy(x => x.Category)
.Select(g => new Groups{ Category = g.Key, Examples = g.Select(x => x.Animal) });
您可以附加Distinct以獲得獨特的動物和ToArray/ToList如果您想要一個集合。
uj5u.com熱心網友回復:
就像 Tim Schmelter 的回答一樣,只是在查詢語法中,這在美學上更令人賞心悅目:
var result = (from a in animalList
from c in a.Categories
group a.Example by c into g
select new Groups
{
Category = g.Key,
Examples = g.ToList()
}).ToList();
(注意:由于你的類分別代表一個動物和一個群體,它們應該以單數命名。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/515642.html
標籤:C#林克
