我如何强制转换列表 有效?

问题描述 投票:23回答:8

我有一个

List<InputField> 

但我需要一个

List<IDataField>  

是否有一种方法可以在C#中强制转换?还是使用Linq获得相同的结果?

我有两个实现相同接口的类:

interface IDataField { }
class InputField : IDataField { }
class PurchaseField : IDataField { }

此列表来自Linq-to-Sql查询:

List<InputField> list = (from i .... select i).ToList();
c# linq-to-sql
8个回答
41
投票

。OfType 和.Cast 都将返回T的列表,但两种方法的含义不同。


11
投票
List<InputField> raw = (from i .... select i).ToList();
List<IDataField> result = raw.OfType<IDataField>().ToList();

7
投票

您也可以使用List.ConvertAll


5
投票

由于列表来自


3
投票

以防万一:我几乎没有C#经验,但是如果这种通用构造表示它在Java中所做的相同操作,那么您[[必须


1
投票

1
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.