asp.net中的C#列表转换

时间:2010-08-22 06:28:04

标签: c# asp.net list

我有一个业务对象类BusinessObject,它实现了一个接口IAlternateInterface。我已经有了一个方法,它将返回一个包含我想要的对象的BusinessObject的通用列表,但我希望将它们作为IAlternateInterface的列表。我尝试做类似下面的psudo代码,但我得到一个“无法转换源类型...到目标类型...”消息在Visual Studio中。转换列表的最佳方法是什么?

public List<BusinessObject> GetObjects(){
 //logic to get the list
}

public List<IAlternateInterface> GetInterfaceObjects(){
 return GetObjects();
}

3 个答案:

答案 0 :(得分:2)

您正在寻找Enumerable.Cast<TResult>

GetObjects().Cast<IAlternateInterface>.ToList();

只有在需要列表时才需要最后的ToList。投&LT; TResult&GT;返回IEnumerable&lt; TResult&gt;

答案 1 :(得分:2)

使用Cast给出的两个答案适用于C#3 C#4 ...但是如果你使用的是C#4(和.NET 4),你也可以使用泛型方差以避免一步:

public List<IAlternateInterface> GetInterfaceObjects(){
  return GetObjects().ToList<IAlternateInterface>();
}

答案 2 :(得分:0)

使用LINQ Cast

public List<IAlternateInterface> GetInterfaceObjects(){
 return GetObjects().Cast<IAlternateInterface>().ToList();
}