c# - 无法隐式转换类型'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());
}
解决方案
实体框架有一些异步方法。您应该使用 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();
}
推荐阅读
- c++ - 为 std::string 释放内存的异常(尝试在 UE4 中使用 YOLO/Darknet)
- python - 无头铬无法检测元素(硒)
- python - 如何在熊猫中将月份数转换为日期时间
- sql - 有没有办法代替 GROUP BY
- ios - 应用程序图标未出现在使用 Apple ID 的应用程序下
- c# - ListBlobs() 仅查看 Azure blob 容器中的第一个文件夹
- javascript - 向多个收件人发送电子邮件
- python - 合并两个数组并应用一个函数
- carrot2 - 使用 Carrot2 时出现 Java 堆空间错误
- php - 尝试从 PHP git pull 时出现 known_hosts 文件权限问题