LINQ to EF int和string的比较

w199096zx 2014-05-28 10:26:07
MVC里面使用linq to ef 有两个表 A表id是int类型的 b表id是string类型,现在用linq联结起来,遇到问题就是不能直接用a.id.tostring()==b.id就使用了SqlFunctions.StringConvert 但是这个方法最后生成的sql是这样的str(CAST( [Extent1].[id] AS decimal(19,0))) ,sql就出了一个怪问题 str函数过后的和string没法正确的联结起来。上图比较直观,sql都是linq生成的。这只是个测试,数据大家就不要吐槽了。
...全文
1298 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
w199096zx 2014-06-04
  • 打赏
  • 举报
回复
引用 11 楼 wg5945 的回复:
children = new[] { t1.id + "1", t1.text, }, 试试呢~~
不行,试了好多种 不明白 这机制啊,如果我把children=db.bbb.where(XXXX)这种的话 就是正常的 ,其实最终我觉得是这个jQuery的tree插件有问题。我要是没children 插件也出错,不想搞了。这插件不行
wg5945 2014-05-30
  • 打赏
  • 举报
回复
children = new[] { t1.id + "1", t1.text, }, 试试呢~~
w199096zx 2014-05-29
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
没看到linq,只看到sql,不好猜。 加上trim看看呢
引用 8 楼 superliu1122 的回复:
children = new[]{ { id = t1.id + "1", text = t1.text, }}
没人啊?求分析
threenewbee 2014-05-28
  • 打赏
  • 举报
回复
没看到linq,只看到sql,不好猜。 加上trim看看呢
w199096zx 2014-05-28
  • 打赏
  • 举报
回复
为什么木有人啊????
w199096zx 2014-05-28
  • 打赏
  • 举报
回复
引用 8 楼 superliu1122 的回复:
children = new[]{ { id = t1.id + "1", text = t1.text, }}
这样不行啊 我这样写 children = new[]{ new { id = t1.id + "1", text = t1.text, } } 他提示 无法在查询结果中初始化数组类型“System.String[]”。请考虑改用“System.Collections.Generic.List`1[System.String]”。
superliu1122 2014-05-28
  • 打赏
  • 举报
回复
children = new[]{ { id = t1.id + "1", text = t1.text, }}
w199096zx 2014-05-28
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
没看到linq,只看到sql,不好猜。 加上trim看看呢
版主 有个新问题请教下
var temp1 = db.aaa.Join(db.bbb, t => SqlFunctions.StringConvert((decimal)t.id).Trim(), t1 => t1.id, (t, t1) => new
            {
                id = t.id,
                text = t.name,
                state = "closed",
                children = new
                {
                    id = t1.id + "1",
                    text = t1.text,
                },
            });
我最后用JavaScriptSerializer 序列化出来 为什么是这样的
[{"id": 1, "text": "1", "state": "closed","children": {"id": "11","text": "的"}}]
而不是
[{"id": 1, "text": "1", "state": "closed","children": [{"id": "11","text": "的"}]}]
这样的?children少了一对[]中括号,这都算对的json。不过我在前台有jQuery 的tree插件 如果没有中括号就没法显示对。这怎么办啊?
w199096zx 2014-05-28
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
没看到linq,只看到sql,不好猜。 加上trim看看呢
版主就是吊....解决了。。不过linq to ef 要这么对比int 和string 太麻烦了吧?
w199096zx 2014-05-28
  • 打赏
  • 举报
回复
引用 4 楼 bwangel 的回复:
你不要转成decimal,而是把数字转成字符串试试。
就是linq to ef 没法直接用tostring啊...
bwangel 2014-05-28
  • 打赏
  • 举报
回复
你不要转成decimal,而是把数字转成字符串试试。
w199096zx 2014-05-28
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
没看到linq,只看到sql,不好猜。 加上trim看看呢

            var temp1 = db.aaa.Join(db.bbb, t => SqlFunctions.StringConvert((decimal)t.id), t1 => t1.id, (t, t1) => new
            {
                id = t.id,
                name = t1,
            });
代码就这样 主要就是一个是int型 一个是string型 ef 没法直接用tostring 和 equal对比。。

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧