簡體   English   中英

LINQ-選擇不同的子對象

[英]c# LINQ - Selecting distinct sub object

我有以下由c#類表示的對象結構:

[
    {
        Title: "",
        Year: 1977,
        Categories: ["Action", "Adventure", "Fantasy"],
        Score: 96
    }
]

此json序列化為IEnumerable<TitleItem>對象,其中CategoriesIList<string>對象。

TitleItem對象的那個集合中,我想獲得一個新的IList<string>不同類別的對象。 如何才能做到這一點?

collection.SelectMany(x=>x.Categories).District().ToList()

您可以使用SelectMany來“拼合”類別列表,然后使用Distinct

var result = titleItems.SelectMany(item => item.Categories).Distinct().ToList();

您可以執行一個SelectMany ,然后對該IEnumerable進行distinct

IEnumerable<TitleItem> items = getItemsFromSomeWhere();
var uniqueTitles = items.SelectMany(i => i.Categories).Distinct().ToList();

這是將返回不同類別的查詢

class TitleItem {
    public string Title;
    public string Year;
    public float score;
    public IList<string> Categories;
}

var titleItems = new List<TitleItem>();
var titleItem1 = new TitleItem();
titleItem1.Categories = new List<string>();
titleItem1.Categories.Add("Action");
titleItem1.Categories.Add("Adventure");
titleItem1.Categories.Add("Fantasy");
titleItem1.Categories.Add("Action");
titleItems.Add(titleItem1);

var titleItem2 = new TitleItem();
titleItem2.Categories = new List<string>();
titleItem2.Categories.Add("Action");

titleItems.SelectMany(a => a.Categories).Distinct();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM