我试图调用一个函数
NextPrevious((List<Store>)model.Group.ToList(), 3, groupPage.Value, ref next, ref previous);
方法定义为..
private void NextPrevious(List<Store> model, int numFields, int page, ref bool nextRef, ref bool previousRef)
{
...
}
但是我得到一个无法转换Group to Store错误。 model是一个包含Group对象列表的类的变量。
Group也是Store类的子类。
我只检查方法中的基本List<>
内容,例如method.Count
或method.Skip()
,所以如果有更简单的方法可以做到这一点,我就是&#39 ;所有的耳朵,我没有调用任何特定的商店或集团方法。
很抱歉,如果我发布的信息太少,我可以根据需要发布更多信息。谢谢!
答案 0 :(得分:3)
<table>
<tr>
@foreach (var item in Model)
{
<td>
@Html.DisplayFor(modelItem => item.courseName)
<br>
@Html.DisplayFor(modelItem => item.courseSubject)
</td>
}
</tr>
</table>
不是List<Group>
。但是,您可以使用List<Store>
方法的类型参数来创建ToList
而不是:
List<Store>
假设您使用的是C#4或更高版本以及.NET 4或更高版本,那么您可以使用NextPrevious(model.Group.ToList<Store>(), ...)
的协方差。
答案 1 :(得分:1)
您无法为彼此分配不同类型的通用集合! List<Class> = List<Subclass>
因为这些集合的类型不同!
如果您100%确定model.Group仅包含Store类型的元素,则可以执行此操作model.Group.Select(x => (Store)x).ToList()
或model.Group.OfType<Store>().ToList()
如果您不确定model.Group.Where(x => x is Store).Select(x => (Store)x).ToList()
答案 2 :(得分:0)
让List<Store>
成为IEnumerable<Store>
。
List<StoreDerivedClass>
<{1}} <{1}},List<Store>
IEnumerable<StoreDerivedClass>
的原因是IEnumerable<Store>
Co- and Contravariance