CapitalCallCommitmentItem

CapitalCallCommitmentItem

我有一个具有这些属性的类:

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/

10-13 08:59