如何将ObjectResult <int?>转换为IEnumerable <int?>

时间:2016-02-18 01:48:17

标签: c# ienumerable

我明白我写的代码是错误的,所以不要发表我的代码错误的评论。我知道。

这样的东西
ObjectResult<int?> obj = new ObjectResult<int?> as IEnumerable

我无法实例化ObjcetResult,因为它是受保护的类。我无法更改访问修饰符。

1 个答案:

答案 0 :(得分:3)

首先,回答你的问题:

您无法直接将ObjectResult<int?>转换为IEnumerable<int>。虽然IEnumerable<T>是协变的,但int?int之间没有继承关系。

也就是说,您可以将其直接投射到IEnumerable<int?>

(IEnumerable<int?>)objResult

如果您想要IEnumerable<int>,可以执行以下操作:

var result = objResult.Where(x => x.HasValue).Select(x => x.Value);

其次,ObjectResult不是“受保护”类,而是abstract类。 ObjectResult<T>sealed类。 abstractsealed都不是访问修饰符。