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