我有一个具有这些属性的类:
public List<CommitmentItem<ITransaction, ITransactionItem>> CommitmentItems;
public List<CapitalCallCommitmentItem> CapitalCallCommitmentItems;
CapitalCallCommitmentItem
继承了 CommitmentItem。我希望 CapitalCallCommitmentItems
属性返回所有类型为 CapitalCallCommitmentItem 的 CommitmentItems
。所以我尝试了这个代码:get
{
return CommitmentItems
.Where(c => c.GetType() == typeof(CapitalCallCommitmentItem))
.Select(c => (CapitalCallCommitmentItem)c)
.ToList();
}
但是,我收到一条错误消息:
错误 1 无法将类型“Models.CommitmentItem”转换为“Models.CapitalCallCommitmentItem”
这样做的正确方法是什么?
最佳答案
使用 OfType
扩展方法。
return CommitmentItems.OfType<CapitalCallCommitmentItem>().ToList();
在您的代码中,虽然您过滤了
where
子句中的子类型,但它仍将返回列表的一般类型。 OfType
将返回所提供类型的枚举。关于c# - 如何从泛型列表中提取派生类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3093696/