C# 如何从泛型列表中提取派生类型?

C# 如何从泛型列表中提取派生类型?,c#,generics,C#,Generics,我有一个具有以下属性的类: public List<CommitmentItem<ITransaction, ITransactionItem>> CommitmentItems; public List<CapitalCallCommitmentItem> CapitalCallCommitmentItems; 然而,我得到一个错误,说: 错误1无法将类型“Models.CommitmentItem”转换为“Models.CapitalCallCommit

我有一个具有以下属性的类:

public List<CommitmentItem<ITransaction, ITransactionItem>> CommitmentItems;
public List<CapitalCallCommitmentItem> CapitalCallCommitmentItems;
然而,我得到一个错误,说:

错误1无法将类型“Models.CommitmentItem”转换为“Models.CapitalCallCommitmentItem”


正确的方法是什么?

使用
of type
扩展方法

return CommitmentItems.OfType<CapitalCallCommitmentItem>().ToList();
返回committeitems.OfType().ToList();

在代码中,尽管您在
where
子句中过滤子类型,但它仍将返回列表的常规类型
OfType
将返回所提供类型的可枚举项。

确保它是可转换/可转换/OfType

然后试试看

你已经知道了。以下操作在我的机器上运行良好。结果列表的类型为
list


更新:…但是的,
承诺项目。of type
更为优越。

问题名称没有任何意义:(@Restutat-这是一个通用问题名称:对于of type,它甚至不必是可铸造的。我知道,但有点……它应该是“of type”:
return CommitmentItems.OfType<CapitalCallCommitmentItem>().ToList();
get
{                
    return CommitmentItems
        .Where(c => c is CapitalCallCommitmentItem)
        .Select(c => c as CapitalCallCommitmentItem)
        .ToList();
}