嵌套列表 Linq 返回 1 个最终列表 [重复]

Posted

技术标签:

【中文标题】嵌套列表 Linq 返回 1 个最终列表 [重复]【英文标题】:Nested Lists Linq to return 1 definitive list [duplicate] 【发布时间】:2014-10-06 15:23:53 【问题描述】:

我们有一个包含嵌套列表的列表,即。

public class Question

  public string Question  get; set;
  public List<Tag> Tags  get; set; 


public class Tag

  public string TagName  get; set;
  public string TagDescription  get; set;

然后我们有一个 GetQuestions() 返回问题列表的过程

public List<Tag> QuestionTags(int Type)

DAQuestions da = new DAQuestions();
var t = (from d in da.GetQuestions(Type)
               )
                select d.Tags).ToList();

我们正在努力实现它以返回 1 个明确的标签列表(无重复)。

我们现在返回的是一个

List<List<Tag>>

【问题讨论】:

使用SelectMany 来展平你的List&lt;List&lt;Tag&gt;&gt; 并实现IEqualityComparer&lt;Tag&gt; 以从该列表中获取不同的值。见:msdn.microsoft.com/en-us/library/vstudio/… 【参考方案1】:

你需要使用这样的东西:

da.GetQuestions(Type).SelectMany(q => q.Tags).Distinct().ToList();

Distinct 依赖查询提供程序来过滤掉相同的标签,因此它取决于您使用的 OR/M。

【讨论】:

以上是关于嵌套列表 Linq 返回 1 个最终列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用LINQ从列表中获取重复项?

使用 LINQ 获取列表的一部分 [重复]

使用 LINQ 根据 C# 中的属性值搜索嵌套在另一个列表中的列表中的项目?

使用Linq获取列表中对象的索引[重复]

LINQ合并2个列表,保持顺序和来源[重复]

使用 linq 查询嵌套列表