Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.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 Convert.ToInt32_C#_Sql_Linq_Entity Framework - Fatal编程技术网

C# 查询中的Linq Convert.ToInt32

C# 查询中的Linq Convert.ToInt32,c#,sql,linq,entity-framework,C#,Sql,Linq,Entity Framework,我有一些代码: (from AspNetUsers in db.AspNetUsers join UserDetails in db.UserDetails on new { Id = Convert.ToInt32(AspNetUsers.UserDetailId) } equals new { Id = UserDetails.Id } into UserDetails_join where AspNetUsers.Email == "mickeymouse@blueyonder.co.uk

我有一些代码:

(from AspNetUsers in db.AspNetUsers
join UserDetails in db.UserDetails on new { Id = Convert.ToInt32(AspNetUsers.UserDetailId) } equals new { Id = UserDetails.Id } into UserDetails_join
where
AspNetUsers.Email == "mickeymouse@blueyonder.co.uk"
select new
{
   AspNetUsersId = AspNetUsers.AspNetUsersId,
   UsertId = (int?)UserDetails.UserID
}).ToList();
(这是一个包含许多联接的更大查询的片段)

无论如何,我遇到的问题是,查询在Linger程序中运行得很好,但是当我将查询复制到VS 2013时,由于Convert.ToInt32而失败


无法找出原因?

不能在linq to实体中使用
转换.ToInt32

一种方法是“在内存中”(枚举全部)完成所有这些操作

当然,这对性能非常不利

对你来说,另一种方式是

首先:在联接中以另一种方式进行(在
字符串中转换
int
:因为这种方式在linq中对实体是可行的)

=>
new{Id=AspNetUsers.UserDetailId}等于new{Id=SqlFunctions.StringConvert((double)UserDetails.Id)}

然后:仅获取所需数据,枚举并在linq中强制转换到对象

select new
{
   AspNetUsersId = AspNetUsers.AspNetUsersId,
   UsertId = UserDetails.UserID
}).ToList()
.Select (m => new {
   m => m.AspNetUsersId,
   UsertId = (int?)m.UsertId
});
最后:最好的方法是不要将int存储为varchar…

您可以使用cast(即(int?)AspNetUsers.UserDetailId)而不是Convert,EF提供者应该实现它(与提供者相关)。
SQL Server EF provider可能会将其转换为强制转换为

异常说明了什么?您应该确切地说明问题是什么“由于转换.ToInt32而失败”并没有告诉我们太多。有编译器问题吗?运行时异常(如果是什么)?等