【问题标题】:Convert an IEnumerable<Tuple<TParent, TChild>> to an IEnumerable<TParent>将 IEnumerable<Tuple<Parent, Child>> 转换为 IEnumerable<Parent>
【发布时间】:2018-01-02 10:42:48
【问题描述】:

知道TParent 对象包含ICollection&lt;TChild&gt;,我正在尝试将IEnumerable&lt;Tuple&lt;TParent, TChild&gt;&gt; 转换为IEnumerable&lt;TParent&gt;

我是这样开始的,但我现在真的不知道如何标准化结果:

for (int i = 0; i < resultEnumerable.Count(); i++)
{
    var parent = resultEnumerable.ElementAt(i).Item1;
    var child = resultEnumerable.ElementAt(i).Item2;.........
}

【问题讨论】:

  • myEnumerable.Select(tupleItem =&gt; tupleItem.Item1)?
  • 很好的编辑@JasonBoyd - 击败我;到 OP (user3574857) - 下一次,你可能想look here 看看如何为内联代码完成“降价” - 它比有时看起来更容易!
  • 虽然不够好@Jason哈哈
  • 不相关的一点:使用i &lt; resultEnumerable.Count() 是一个真的,真的 坏主意 - 取决于resultEnumerable 是什么,这可能是迭代序列一次每i - 所以你会做N+1循环N而不是1循环Nforeach 将是首选方式。还应该注意ElementAt(i) 具有未定义的性能,并且可以O(i)(平均为N/2 - 两次,所以N)所以现在我们在@ 987654339@ 性能!,与N 相比,简单的foreach

标签: c# tuples ienumerable icollection


【解决方案1】:
resultEnumerable.Select(x => x.Item1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    相关资源
    最近更新 更多