【发布时间】:2015-02-18 04:51:03
【问题描述】:
给定班级
public class Article
{
public string Title { get; set; }
public List<string> Tags { get; set; }
}
和
List<Article> articles;
如何使用 Linq 从单个标签(可能与 1 篇或多篇文章相关联)创建“地图”?
Dictionary<string, List<Article>> articlesPerTag;
我知道我可以像这样选择所有标签
var allTags = articlesPerTag.SelectMany(a => a.Tags);
但是,我不确定如何将每个选定的标签关联回它所来自的文章。
我知道我可以按照传统的方式写这个
Dictionary<string, List<Article>> map = new Dictionary<string, List<Article>>();
foreach (var a in articles)
{
foreach (var t in a.Tags)
{
List<Article> articlesForTag;
bool found = map.TryGetValue(t, out articlesForTag);
if (found)
articlesForTag.Add(a);
else
map.Add(t, new List<Article>() { a });
}
}
但我想了解如何使用 Linq 完成此操作。
【问题讨论】:
标签: c# linq linq-to-objects