将int转换为linq中的字符串,转换为联接子句中的实体
本文关键字:转换 子句 实体 字符串 linq int | 更新日期: 2023-09-27 18:29:35
我试图连接两个表,比较int类型的列和varchar类型的列,但无论如何我都会遇到一些转换错误。。。
using (Ginkgo5Entities dataContext = new Ginkgo5Entities())
{
var x = (
from node in dataContext.new_users_teams
join udata in dataContext.new_users_data
on new {
x = SqlFunctions.StringConvert((double)node.ID),
y = "team" }
equals new {
x = udata.value,
y = udata.key }
from parent in dataContext.new_users_teams
where node.lft >= parent.lft && node.lft <= parent.rgt && parent.ID == 6
select new {
team = node.team_name
// udata = udata }
).ToList();
}
这抛出
"{无法将类型"System.Data.Objects.SqlClient.SqlFunctions"上指定的方法"System.String StringConvert(System.Nullable `1[System.Double])"转换为LINQ to Entities存储表达式。}"
问题:
- 这可能是我正在尝试的吗?如果是……有人能帮忙吗
- 我这是个坏习惯吗
非常感谢!
尝试将此查询更改为:
var x = (from node in dataContext.new_users_teams
join udata in dataContext.new_users_data on node.ID equals udata.value.ToString() and udata.key equals "team" }
from parent in dataContext.new_users_teams
where node.lft >= parent.lft && node.lft <= parent.rgt && parent.ID == 6