我尝试将包含Products的List转换为Type类型列表以返回到另一个方法。这就是我的方法的样子:
public IList<Type> GetProducts()
{
var products = new List<Products>()
{
new Products { ID="1",Name="Soap",Price="200"},
new Products { ID="2",Name="Trouser",Price="300"},
new Products { ID="3",Name="Shirt",Price="400"}
}.ToList();
return products;
}
错误: 给我一个错误,指出无法将产品列表转换为System.Type列表。
有人可以给我一个方法来解决这个问题。先感谢您!
答案 0 :(得分:3)
好吧,我们来看看你写的内容:
public IList<Type> GetProducts()
基本上意味着您将返回类型对象的列表,但在方法的正文中,您基本上会说return new List<Products>;
,这显然是您无法做到的它与方法签名相矛盾。您可以使用return products.Select(x=>typeof(x)).ToList();
来选择列表中对象的类型。
你为什么要那样做?您正在创建相同类型的列表产品,并且返回的列表将包含所有相同的对象(产品类型)。
你能说得更具体,你想要达到什么目的?
答案 1 :(得分:2)
@ ice-jovanoski的答案有点中等。它使用“ products.Select(x =&gt; x.GetType())。ToList()”
public static IList<Type> GetProducts()
{
var products = new List<Products>()
{
new Products { ID="1",Name="Soap",Price="200"},
new Products { ID="2",Name="Trouser",Price="300"},
new Products { ID="3",Name="Shirt",Price="400"}
}.ToList();
return products.Select(x => x.GetType()).ToList();
}
答案 2 :(得分:0)
试试这个:
public IList<Products> GetProducts()
{
var products = new List<Products>()
{
new Products { ID="1",Name="Soap",Price="200"},
new Products { ID="2",Name="Trouser",Price="300"},
new Products { ID="3",Name="Shirt",Price="400"}
}.ToList();
return products;
}
返回类型应为IList<Products>
,而不是IList<System.Type>
。