Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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中将字符串转换为int_C#_Sql Server_Linq - Fatal编程技术网

C# 在linq中将字符串转换为int

C# 在linq中将字符串转换为int,c#,sql-server,linq,C#,Sql Server,Linq,我有一个表tblcatalogue,有一个数据类型为varchar的列classid。我想要一个包含orderby classid的结果集,但问题是使用order by classid并没有给出所需的结果。因此我尝试将classid转换为整数,如 var query= itemRepository.GetAll(); results = query.ToList().OrderBy(x=> Convert.ToInt32(x.ClassId)); 但我得到的sql查询如下 SE

我有一个表tblcatalogue,有一个数据类型为varchar的列classid。我想要一个包含orderby classid的结果集,但问题是使用order by classid并没有给出所需的结果。因此我尝试将classid转换为整数,如

var query= itemRepository.GetAll();  
results = query.ToList().OrderBy(x=> Convert.ToInt32(x.ClassId));   
但我得到的sql查询如下

SELECT 
[Extent1].[Id] AS [Id], 
[Extent1].[SubjectId] AS [SubjectId], 
[Extent1].[SeriesId] AS [SeriesId], 
[Extent1].[Title] AS [Title], 
[Extent1].[Author] AS [Author], 
[Extent1].[ISBN] AS [ISBN], 
[Extent1].[Edition] AS [Edition], 
[Extent1].[Price] AS [Price], 
[Extent1].[Discount] AS [Discount], 
[Extent1].[BoardId] AS [BoardId], 
[Extent1].[ClassId] AS [ClassId]
FROM [dbo].[tblCataLogue] AS [Extent1]
ORDER BY [Extent1].[ClassId] ASC
我想要转换的sql查询,比如

SELECT 
[Extent1].[Id] AS [Id], 
[Extent1].[SubjectId] AS [SubjectId], 
[Extent1].[SeriesId] AS [SeriesId], 
[Extent1].[Title] AS [Title], 
[Extent1].[Author] AS [Author], 
[Extent1].[ISBN] AS [ISBN], 
[Extent1].[Edition] AS [Edition], 
[Extent1].[Price] AS [Price], 
[Extent1].[Discount] AS [Discount], 
[Extent1].[BoardId] AS [BoardId], 
[Extent1].[ClassId] AS [ClassId]
FROM [dbo].[tblCataLogue] AS [Extent1]
ORDER BY covnert(int,[Extent1].[ClassId]) ASC
因为它在使用
ToList()
时给出了正确的结果集,所以您正在执行对数据库的查询,因此不会进行您想要的排序。删除
ToList()
,order by子句也将转换为sql:

results = query.OrderBy(x=> Convert.ToInt32(x.ClassId)).ToList();   

至于正在进行的错误,linq提供程序不支持
Convert.ToInt32
,因此无法将其转换为sql。因此,你应该做两件事中的一件:

  • 与开头一样,首先将数据检索到内存中(使用
    ToList()
    /
    AsEnumerable()
    ),然后转换
  • 将数据库中的列更改为int-IMO类型,因为您的数据是一个数字,所以在任何情况下都应该这样表示
  • 使用
    ToList()
    时,您正在执行对数据库的查询,因此不会进行所需的排序。删除
    ToList()
    ,order by子句也将转换为sql:

    results = query.OrderBy(x=> Convert.ToInt32(x.ClassId)).ToList();   
    

    至于正在进行的错误,linq提供程序不支持
    Convert.ToInt32
    ,因此无法将其转换为sql。因此,你应该做两件事中的一件:

  • 与开头一样,首先将数据检索到内存中(使用
    ToList()
    /
    AsEnumerable()
    ),然后转换
  • 将数据库中的列更改为int-IMO类型,因为您的数据是一个数字,所以在任何情况下都应该这样表示

  • Remove
    ToList()
    我得到的错误类似于LINQ-to-Entities不识别方法“Int32-ToInt32(System.String)”方法,并且此方法无法转换为存储表达式。Remove
    ToList()
    我得到的错误类似于LINQ-to-Entities不识别方法“Int32-ToInt32(System.String)”方法,并且此方法无法转换为存储表达式。我遇到了类似LINQ to Entities无法识别方法“Int32 ToInt32(System.String)”的错误,并且此方法无法转换为存储表达式Rahul SrivastavaI am getting error(如LINQ to Entities)无法识别方法“Int32 ToInt32(System.String)”方法,并且此方法无法转换为存储表达式拉胡尔·斯利瓦斯塔瓦