我遇到了一些我的代码.我有一个控制器,我打电话从我的数据库中检索公司列表.但是,当我测试它时,我得到一个错误,指出状态:LINQ to Entities无法识别方法System.String ToString()方法,并且此方法无法转换为存储表达式.
我似乎无法找到解决这个问题的方法,并且有人建议我使用foreach循环.
public List<SelectListItem> GetCompanyList()
{
using (var ctx = new Risc_Track_beEntities())
{
var companies = ctx.tblCodeBrokerComps.Where(comp => comp.BrokerCompStatus == 1);
var activeBrokerLocs = companies.Select(b => new SelectListItem
{
Value = b.BrokerCompID.ToString(),
Text = b.BrokerComp
});
return activeBrokerLocs.ToList<SelectListItem>();
}
}
Run Code Online (Sandbox Code Playgroud)
ToString()在这种情况下,LINQ to SQL不知道如何转换为SQL.
最简单的解决方案是使用AsEnumerable"转移控制"到LINQ到对象.您可以使用初始值Select来确保只从数据库中提取相关字段,然后AsEnumerable获取a IEnumerable<T>,然后Select获取最终结果:
var activeBrokerLocs = companies.Select(b => new { b.BrokerCompID,
b.BrokerComp })
.AsEnumerable()
.Select(b => new SelectListItem
{
Value = b.BrokerCompID.ToString(),
Text = b.BrokerComp
});
Run Code Online (Sandbox Code Playgroud)