You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何利用GroupBy实现将多分类文章归入对应多个分组?

解决多类别文章的分组问题

这个场景我之前处理过,直接用常规的GroupBy(x => x.Category)确实行不通——因为它只能把每个元素分配到一个组里。不过咱们换个思路,先把多类别的文章“拆解开”,再分组就完美解决了!

核心思路

  1. 扁平化处理:把每篇带有多个类别的文章,拆分成多个「类别+文章」的独立条目。比如“文章1”属于苹果和橙子,就拆成两个条目:(苹果, 文章1)、(橙子, 文章1)。
  2. 常规分组:对扁平化后的集合按类别分组,这样每个类别组里就会包含所有属于它的文章了。

代码示例(以C#为例)

首先定义文章类:

public class Article
{
    public string Title { get; set; }
    public List<string> Categories { get; set; }
}

模拟你的示例数据:

var articles = new List<Article>
{
    new Article { Title = "文章1", Categories = new List<string> { "苹果", "橙子" } },
    new Article { Title = "文章2", Categories = new List<string> { "苹果" } },
    new Article { Title = "文章3", Categories = new List<string> { "橙子" } }
};

关键的扁平化+分组步骤:

// 用SelectMany展开多类别,生成(类别, 文章)的键值对集合
var flattenedArticles = articles.SelectMany(article => 
    article.Categories.Select(category => new { Category = category, Article = article })
);

// 按类别分组,得到目标结果
var groupedArticles = flattenedArticles.GroupBy(item => item.Category);

验证结果

我们可以遍历分组后的集合,看看输出是否符合预期:

foreach (var categoryGroup in groupedArticles)
{
    Console.WriteLine($"【{categoryGroup.Key}】组:");
    foreach (var entry in categoryGroup)
    {
        Console.WriteLine($"  - {entry.Article.Title}");
    }
}

输出结果:

【苹果】组:

  • 文章1
  • 文章2
    【橙子】组:
  • 文章1
  • 文章3

完全符合你想要的效果!

内容的提问来源于stack exchange,提问作者Erica Stockwell-Alpert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:51:09