如何从方法返回通用List

时间:2015-02-02 13:33:45

标签: c# .net

我想从方法返回未知类型的List。我收到错误的回复'代码行。

public List<T> GetMethod<T>()
{
   var categoryCounts =
               (from r in reqCount
                group r by new
                {
                    r.First,
                    r.Second
                }
                into g
                select new
                      {
                        MonthNumber = g.Key.First,
                        Category = g.Key.Second,
                        OrdersCount = g.Count()
                      }).OrderBy(m => m.MonthNumber).ThenBy(c => c.Category).ToList();

   return categoryCounts;
}

提前致谢

4 个答案:

答案 0 :(得分:2)

您无法从方法中返回匿名类型。

您可以返回List<Object>,但这不是真正的通用。

或者,您可以创建命名类型并返回包含以下内容的List:

public class MyType
{
    int MonthNumber {get;set;}
    string Category {get;set;}
    int OrdersCount {get;set;}
}

public List<MyType> GetMethod()
{
    var categoryCounts =
           (from r in reqCount
            group r by new
            {
                r.First,
                r.Second
            }
                into g
                select new MyType()
                {
                    MonthNumber = g.Key.First,
                    Category = g.Key.Second,
                    OrdersCount = g.Count()
                }).OrderBy(m => m.MonthNumber).ThenBy(c => c.Category).ToList();

    return categoryCounts;
}

答案 1 :(得分:1)

public List<object> GetMethod(){}

public IList<object> GetMethod(){}

然后

var res = GetMethod();
res[0].YouFieldOrProp

您无法从方法中返回匿名类型。

答案 2 :(得分:0)

您的方法签名返回泛型类型,但其中的代码返回特定匿名类型的列表。编译器无法将您的匿名类型转换为调用者使用的T。 (GetMethod对你的实现没有意义)。

在不知道如何使用的情况下,不清楚您的方法应该是通用的,还是应该返回具体类型。

答案 3 :(得分:0)

您可以创建返回类型dynamic。但是你需要非常小心这种返回类型。您将失去编译时检查,并且intellisense将不再适用于返回对象。