Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.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# 在LINQ to SQL中,如何将字符串转换为int?_C#_Sql_Linq_Type Conversion - Fatal编程技术网

C# 在LINQ to SQL中,如何将字符串转换为int?

C# 在LINQ to SQL中,如何将字符串转换为int?,c#,sql,linq,type-conversion,C#,Sql,Linq,Type Conversion,我在数据库中有一个表,其中包含存储数据的varchar字段。如何将LINQ函数中的字符串转换为int,以便查询该字段?无论是Convert.toInt32()还是int.parse()都不能在LINQ Entities函数内部工作(当您查询内存中已有的列表时,它们可以工作,但当函数链将转换为SQL查询并发送给数据库执行时,它们就不能工作) 创建另一个与您的业务需求相匹配的模型,并创建一个方法将您的实体映射到您的业务模型。Linq to SQL中不支持从字符串到整数的转换。但是,有一个实用程序类具

我在数据库中有一个表,其中包含存储数据的
varchar
字段。如何将LINQ函数中的
字符串
转换为
int
,以便查询该字段?无论是
Convert.toInt32()
还是
int.parse()
都不能在LINQ Entities函数内部工作(当您查询内存中已有的列表时,它们可以工作,但当函数链将转换为SQL查询并发送给数据库执行时,它们就不能工作)


创建另一个与您的业务需求相匹配的模型,并创建一个方法将您的实体映射到您的业务模型。

Linq to SQL中不支持从字符串到整数的转换。但是,有一个实用程序类具有可以转换为SQL表达式的方法。
System.Data.Entity.SqlServer.SqlFunctions
具有Linq to Sql中支持的方法。因此,在您的例子中,您可以使用
SqlFunctions.StringConvert()
将本地整数转换为字符串并进行比较

E.g. yourTable.Where(r => r.Field == SqlFunction.StringConvert(<your integer>));
例如yourTable.Where(r=>r.Field==SqlFunction.StringConvert());

换句话说,没有办法做到这一点?尽管SQL完全能够将字符串转换为int,但LINQtoSQL没有可以转换为SQL CAST()或CONVERT()函数的功能?我不知道。如果有某种方式的话,它可能是不必要的复杂。据我所知,这种方法在我工作过的任何地方都是标准的。如果解析失败,您将如何处理?如果为空?我同意这听起来更像是一个商业问题。如果这是所需的类型,为什么数据库中的字段不以整数开头?这对查询很有好处。我相信他还希望他的模型将结果包含为整数,因此需要转换查询结果。只需对linq查询调用ToList(),即可将集合加载到内存中,并支持.Net convert METHORS.linq to SQL?如中所述,十年前的实体框架?只是想确保LINQtoSQL已经死了,如果可能的话,您可能不应该使用它。