' 到 'System.Collections.Generic.List',c#,asp.net-mvc-5"/>

首页 > 解决方案 > 无法隐式转换类型'System.Collections.Generic.IEnumerable' 到 'System.Collections.Generic.List'

问题描述

我正在使用 IEnumerable 进行查询,似乎我不明白为什么我错了。我想从我的表中返回某些列。但有些不对劲。

    public class Intermediary
   {
   public string CODE { get; set; }
   public string Name { get; set; }
   }

   public async Task<IEnumerable<Intermediary>> GetTest(string company)
   {
    var db = new SibaCiidDbContext();
    var results = (from o in db.Intermediary 
                   where o.CompanyCode == company 
                   select o).Select(o => new 
                   {
                       CODE = o.CompanyCode,
                       NAME = o.FullName
                   });

    return await Task.FromResult(results.ToList());
    }

标签: c#asp.net-mvc-5

解决方案


实体框架有一些异步方法。您应该使用 ToListAsync() 但您的方法必须返回完整的对象。当你收到方法返回的对象后,就可以使用 Select 方法得到你想要的了。

 public async Task<IEnumerable<Intermediary>> GetTest(string company)
{

    var db = new SibaCiidDbContext();
    var results = (from o in db.Intermediary where o.CompanyCode == company select o);

    return await results.ToListAsync();
}

所以在这之后你可以像这样使用它

List<Intermediary> objectList = await object.GetTest(nameCompany);
var anotherList = objectList.Select(o => new {
    CODE = o.CompanyCode,
    NAME = o.FullName
});

如果您只想返回这些属性,那么您可以创建一个具有这些属性的对象。例如:

public class SomeObject
{
    public string CODE { get; set; }
    public string Name { get; set; }
}

     public async Task<IEnumerable<SomeObject>> GetTest(string company)
{

    var db = new SibaCiidDbContext();
    var results = (from o in db.Intermediary where o.CompanyCode == company select new SomeObject{CODE = o.CompanyCode, NAME = o.FullName });

    return await results.ToListAsync();
}

推荐阅读