gpt4 book ai didi

c# - 查询中的 Linq Convert.ToInt32

转载 作者:行者123 更新时间:2023-11-30 21:57:03 24 4
gpt4 key购买 nike

我有一些代码:

(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 entities 中使用 Convert.ToInt32

一种方法是“在内存中”执行所有这些操作(枚举所有)。

但这当然对性能非常不利。

在您的情况下,另一种方式是

First :在连接中以另一种方式进行(将 int 转换为 string :因为这种方式在 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...

关于c# - 查询中的 Linq Convert.ToInt32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30979483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com