Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用c进行数据库调用时出现System.String ToString()错误_C#_Linq - Fatal编程技术网

C# 使用c进行数据库调用时出现System.String ToString()错误

C# 使用c进行数据库调用时出现System.String ToString()错误,c#,linq,C#,Linq,我的一些代码遇到了麻烦。我有一个控制器,我打电话从数据库中检索公司列表。但是,当我测试它时,我得到一个错误,声明:LINQ to Entities无法识别方法System.String ToString方法,并且该方法无法转换为存储表达式 我似乎无法找到一种方法来解决这个问题,有人建议我使用foreach循环 不能将ToString作为linq to sql调用的一部分调用。LINQtoSQL语句被转换为实际的sql,而sql没有ToString方法 尝试创建一个更接近sql中模型的对象,然后将

我的一些代码遇到了麻烦。我有一个控制器,我打电话从数据库中检索公司列表。但是,当我测试它时,我得到一个错误,声明:LINQ to Entities无法识别方法System.String ToString方法,并且该方法无法转换为存储表达式

我似乎无法找到一种方法来解决这个问题,有人建议我使用foreach循环

不能将ToString作为linq to sql调用的一部分调用。LINQtoSQL语句被转换为实际的sql,而sql没有ToString方法


尝试创建一个更接近sql中模型的对象,然后将其转换为实际需要的对象。在这种情况下,LINQ to sql不知道如何将ToString转换为sql

最简单的解决方案是使用AsEnumerable将控制权转移到LINQ对象。您可以使用初始选择来确保只从数据库中提取相关字段,然后使用可计算来获取IEnumerable,然后使用另一个选择来获得最终结果:

var activeBrokerLocs = companies.Select(b => new { b.BrokerCompID,
                                                   b.BrokerComp })
                                .AsEnumerable()
                                .Select(b => new SelectListItem
                                {
                                    Value = b.BrokerCompID.ToString(),
                                    Text = b.BrokerComp
                                });
也可以使用SqlFunctions.StringConvert。就你而言

Value = SqlFunctions.StringConvert((decimal)b.BrokerCompID)

这是有效的,我在一个类似的函数调用中重复了它,但又出现了另一个名称错误。@mg2004:我建议你问一个单独的、更详细的问题,然后另一个名称错误并没有给出足够的细节。。。
Value = SqlFunctions.StringConvert((decimal)b.BrokerCompID)