【问题标题】:Retrieve IEnumerable of specific type from combined list of different IEnumerables casted as Object从转换为对象的不同 IEnumerable 的组合列表中检索特定类型的 IEnumerable
【发布时间】:2017-09-14 11:45:00
【问题描述】:

我已经转换了不同类型的 IEnumerables 并将它们传递到一个列表中。

combinedAll = ((TypeOneIenumerable).Cast<object>()).ToList().Concat(((TypeTwoIenumerable).Cast<object>())).Concat(((TypeThreeIenumerable).Cast<object>()));

我将这个列表检索为

var combined = (IEnumerable<object>)value;

现在,

我想根据 IEnumerables 的特定类型来分隔它们。 我想做这样的事情:

var getBackTypeOneIenumerable = (IEnumerable<TypeOneIenumerable>)value;

这样我就可以在 getBackTypeOneIenumerable 上执行 Select/Where。

【问题讨论】:

标签: c# linq ienumerable


【解决方案1】:

您可以使用Enumerable.OfType 进行过滤和强制转换:

IEnumerable<TypeOneIenumerable> getBackTypeOneIenumerable = combinedAll.OfType<TypeOneIenumerable>();

顺便说一句,您在查询中的ToList 调用是多余的,它将无缘无故地创建一个新列表。

您可以通过这种方式将所有东西放在一起:

IEnumerable<TypeOneIenumerable> getBackTypeOneIenumerable = TypeOneIenumerable.OfType<TypeOneIenumerable>()
    .Concat(TypeTwoIenumerable.OfType<TypeOneIenumerable>())
    .Concat(TypeThreeIenumerable.OfType<TypeOneIenumerable>());

【讨论】:

    猜你喜欢
    • 2020-04-14
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多