如何将通用List <myclass>转换为IList <system.type>?

时间:2016-03-27 08:46:46

标签: c# asp.net-mvc list generics

我尝试将包含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列表。

有人可以给我一个方法来解决这个问题。先感谢您!

3 个答案:

答案 0 :(得分:3)

好吧,我们来看看你写的内容:

  1. public IList<Type> GetProducts()基本上意味着您将返回类型对象的列表,但在方法的正文中,您基本上会说return new List<Products>;,这显然是您无法做到的它与方法签名相矛盾。您可以使用return products.Select(x=>typeof(x)).ToList();来选择列表中对象的类型。

  2. 你为什么要那样做?您正在创建相同类型的列表产品,并且返回的列表将包含所有相同的对象(产品类型)。

  3. 你能说得更具体,你想要达到什么目的?

答案 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>