使用c#在数据库调用上出现System.String ToString()错误

mg2*_*004 3 c# linq

我遇到了一些我的代码.我有一个控制器,我打电话从我的数据库中检索公司列表.但是,当我测试它时,我得到一个错误,指出状态: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)

Jon*_*eet 6

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)