将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存储表达式。}"

问题:

  1. 这可能是我正在尝试的吗?如果是……有人能帮忙吗
  2. 我这是个坏习惯吗

非常感谢!

将int转换为linq中的字符串,转换为联接子句中的实体

尝试将此查询更改为:

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