从转换为对象的不同 IEnumerable 的组合列表中检索特定类型的 IEnumerable
Retrieve IEnumerable of specific type from combined list of different IEnumerables casted as Object
我转换了不同类型的 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。
您可以使用 Enumerable.OfType
过滤和投射:
IEnumerable<TypeOneIenumerable> getBackTypeOneIenumerable = combinedAll.OfType<TypeOneIenumerable>();
顺便说一句,您在查询中的 ToList
调用是多余的,它会无缘无故地创建一个新列表。
你可以这样把所有的东西都放在一起:
IEnumerable<TypeOneIenumerable> getBackTypeOneIenumerable = TypeOneIenumerable.OfType<TypeOneIenumerable>()
.Concat(TypeTwoIenumerable.OfType<TypeOneIenumerable>())
.Concat(TypeThreeIenumerable.OfType<TypeOneIenumerable>());
我转换了不同类型的 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。
您可以使用 Enumerable.OfType
过滤和投射:
IEnumerable<TypeOneIenumerable> getBackTypeOneIenumerable = combinedAll.OfType<TypeOneIenumerable>();
顺便说一句,您在查询中的 ToList
调用是多余的,它会无缘无故地创建一个新列表。
你可以这样把所有的东西都放在一起:
IEnumerable<TypeOneIenumerable> getBackTypeOneIenumerable = TypeOneIenumerable.OfType<TypeOneIenumerable>()
.Concat(TypeTwoIenumerable.OfType<TypeOneIenumerable>())
.Concat(TypeThreeIenumerable.OfType<TypeOneIenumerable>());