从作为对象

时间:2017-09-14 11:45:01

标签: c# linq ienumerable

我已经输入了不同类型的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。

1 个答案:

答案 0 :(得分:1)

您可以使用Enumerable.OfType过滤和转换:

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

顺便说一句,您查询中的ToList电话是多余的,它会毫无理由地创建新列表。

你可以用这种方式将所有东西放在一起:

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