【问题标题】:How to Get List<int> for all values of ParentID in another List?如何获取另一个 List 中 ParentID 的所有值的 List<int>?
【发布时间】:2014-08-14 02:34:58
【问题描述】:

我有 2 个列表,一个是类,另一个是整数。我正在尝试返回 Lists Taxonomy 属性之一中存在的所有 ParentID 值,但在生成它时没有任何成功。

例如:

List<int> theListingCatIDs = new List<int>();
theListingCatIDs = allMemberListings.Select(u => u.Taxonomy.ConvertAll<int>(v => v.ParentID)).Distinct().ToList();

这给了我一个错误,说它无法将List&lt;List&lt;int&gt;&gt; 转换为List&lt;int&gt;,但是我怎样才能将结果展平以将它们全部放在List&lt;int&gt; 中??

【问题讨论】:

  • 这不是那个问题的完全重复,但那个问题和那个答案会告诉你如何做到这一点。
  • 顺便说一句,在将theListingCatIDs 分配给您的LINQ 表达式之前,您不应该将其实例化为List&lt;int&gt;。这没什么大不了的,但那是在内存中创建一个未使用的实例,然后 GC 必须清理它,没有任何收获。
  • @MatthewHaugen - 谢谢,我把它放在文件的全局范围内,因为我需要在 OnItemDataBound 中继器中使用它。干杯:)
  • 顺便说一句,在发布这个问题之前,我已经尝试过搜索 SO。感谢您提供有用的链接,不过,我不太确定要搜索什么,而且我在搜索中得到的结果也没有帮助。

标签: c# asp.net list


【解决方案1】:

你可以使用SelectMany:

var ids = allMemberListings
    .SelecMany(x => x.Taxonomy)
        .Select(x => x.ParentID)
    .Distinct()
    .ToList()

MSDN:http://msdn.microsoft.com/en-us/library/bb534336(v=vs.100).aspx

它将嵌套列表扁平化为一个包含 Taxonomy 的单个列表。然后,您可以照常使用Select 拉出ParentIDs。

【讨论】:

  • 谢谢!这实际上将列表展平为整数列表,这正是我想要的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多