Я не могу сказать из вашего описания, есть ли у вас IEnumerable<string>
, представляющий теги, или IEnumerable<Tag>
, представляющий теги, поэтому вот подход для обоих:
Для случая Tag
:
List<Tag> tags = new List<Tag>() {
new Tag() { TagName = "tag1" },
new Tag() { TagName = "tag1" },
new Tag() { TagName = "tag2" },
new Tag() { TagName = "tag3" },
new Tag() { TagName = "tag3" },
new Tag() { TagName = "tag2" }
};
var tagList = tags.GroupBy(t => t.TagName)
.Select(g => new Tag() {
TagName = g.Key,
TagCount = g.Count()
})
.ToList();
Для случая string
:
List<string> list = new List<string>() {
"tag1",
"tag1",
"tag2",
"tag3",
"tag3",
"tag2"
};
var tagList = list.GroupBy(s => s)
.Select(g => new Tag() {
TagName = g.Key,
TagCount = g.Count()
})
.ToList();
В обоих случаях я использовал определение
class Tag {
public int TagID { get; set; }
public string TagName { get; set; }
public int TagCount { get; set; }
}