无法将类型'System.Collections.Generic.IEnumerable <anonymoustype#1>'隐式转换为'System.Collections.Generic.IEnumerable <t>

时间:2015-07-06 09:19:17

标签: c# .net linq generics

我已经定义了自己的模型类MyModel.Customer

我在使用<T>而非直接模型类的方法中遇到转换问题。

public IEnumerable<T> MyMethod<T>() where T : class
        {
            // my method code
        }

收到运行时错误:

  

base =(14,8):错误CS0266:无法隐式转换类型   'System.Collections.Generic.IEnumerable<MyModel.Customer>'来   'System.Collections.Generic.IEnumerable<T>'。显式转换   存在(你是否错过演员表?)

为什么呢?任何线索?

1 个答案:

答案 0 :(得分:1)

你是不是想这样做:

public static IEnumerable<T> MyMethod<T>() where T : class
{
    // my method code   
    List<Customer> customers = new List<Customer>()
       {
            new Customer(), new Customer(), new Customer()
       };
    return customers;
}

这种方式不起作用......

您应该明确地转换集合中的每个元素。

public static IEnumerable<T> MyMethod<T>() where T : class 
{
    List<T> resultList = new List<T>();   
    List<Customer> customers = new List<Customer>()
       {
            new Customer(), new Customer(), new Customer()
       };
    for(int i = 0; i < customer.Count; i++)
       resultList.Add(customers[i] as T);  // attempt to cast here
    return resultList;
}
相关问题