gpt4 book ai didi

c# - LINQ distinct 与基于 List 属性的相应计数

转载 作者:太空狗 更新时间:2023-10-29 20:09:50 28 4
gpt4 key购买 nike

我有以下类(class)

public class Photo
{
public int Id { get; set; }
public string Caption { get; set; }
public Collection<string> Tags { get; set; }
}

一张照片可以关联多个标签,同一标签可以用于任意数量的不同照片。

我最终想要做的是检索不同标签的列表,以及分配给每个标签的照片数量。

我无法控制底层数据 - 我使用的 API 具有我用来检索照片集合的搜索方法,但没有方法获取不同标签的列表。

所以我的问题是,如果我有大量照片,我如何使用 LINQ 获取此列表中包含的标签的不同列表,并获取每个标签的(照片)数量?

最佳答案

var tagCounts = photos
.SelectMany(photo => photo.Tags)
.GroupBy(tag => tag, (tag, group) => new { tag, count = group.Count() })
.ToDictionary(tuple => tuple.tag, tuple => tuple.count);

推理如下。

  • 获取所有标签的顺序,如果多张照片具有相同的标签,则重复。
  • 将重复的标签按值分组,统计每组标签的个数。
  • 构建一个从每个标签到具有该标签的照片数量的字典映射。

关于c# - LINQ distinct 与基于 List 属性的相应计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29976021/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com