一起来探讨LINQ的Join逻辑

Yaka 2017-07-25 03:24:47
对于Linq的Join,无论是Lambda还是Join()方法,都只能用equlas对比两个Object。
我想实现其他运算逻辑(例如小于或大于),这个要怎样做?就像 on a.Score > b.Score

我知道join a,b表后用where可以实现,但这仅限于inner join,若要left join的话就做不到了吧?
...全文
475 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yaka 2017-07-27
  • 打赏
  • 举报
回复
這裡沒高手嗎???????
CPU不够了 2017-07-27
  • 打赏
  • 举报
回复
引用 12 楼 yaka1130 的回复:
[quote=引用 11 楼 duanzi_peng 的回复:] sqlserver 中on 之后用等于号。 linq 语法中用equals
你说的等于号就是equals, 我明白!!!!! 但在sqlserver裡面,你的on后面从未出现过 ">" "<" "like" 这些运算符????????[/quote] 你的on后面出现 ">" "<" "like" 这些运算符?并不是建立关系,也只是筛选条件啊,开始也要相等建立关系啊
正怒月神 2017-07-27
  • 打赏
  • 举报
回复
引用 13 楼 yaka1130 的回复:
版主,纯探讨 就是想不明白为啥linq中不行
没办法用比较符号啊,人家这么规定的linq,在怎么讨论也是没办法。 你最大多可以使用多条件来关联。 new{id=a.id,name=a.name} equal new{id=b.id,name=b.name} 但是真想不出大于小于怎么表示
exception92 2017-07-27
  • 打赏
  • 举报
回复
引用 12 楼 yaka1130 的回复:
[quote=引用 11 楼 duanzi_peng 的回复:] sqlserver 中on 之后用等于号。 linq 语法中用equals
你说的等于号就是equals, 我明白!!!!! 但在sqlserver裡面,你的on后面从未出现过 ">" "<" "like" 这些运算符????????[/quote] 是的。至少我没有遇到过
Yaka 2017-07-26
  • 打赏
  • 举报
回复
引用 10 楼 hanjun0612 的回复:
linq中不行。
版主,纯探讨 就是想不明白为啥linq中不行
Yaka 2017-07-26
  • 打赏
  • 举报
回复
引用 11 楼 duanzi_peng 的回复:
sqlserver 中on 之后用等于号。 linq 语法中用equals
你说的等于号就是equals, 我明白!!!!! 但在sqlserver裡面,你的on后面从未出现过 ">" "<" "like" 这些运算符????????
exception92 2017-07-26
  • 打赏
  • 举报
回复
引用 8 楼 yaka1130 的回复:
[quote=引用 7 楼 duanzi_peng 的回复:] [quote=引用 6 楼 yaka1130 的回复:] [quote=引用 4 楼 duanzi_peng 的回复:] join的是“关系”,不是“条件” 。 大于小于之类的属于条件运算符,自然要用在where 中。只有join。
你说的“关系”的表现方式只能是equlas? 不能大于或小于?[/quote] 难道一个表的id值小于或者大于另一个表的id值 就说他们有关系? “关系”建立在对等的基础之上。 比如一个id1=2,另一个表的id2=2,id2=3,id2=4 如果条件 id2>=id1 就不能说 id2=3,id2=4的数据 与id1=2的数据有关系。[/quote] er..........在你全部的业务逻辑应用里面,sql使用inner join,on后面都是等于号?[/quote]
引用 8 楼 yaka1130 的回复:
[quote=引用 7 楼 duanzi_peng 的回复:] [quote=引用 6 楼 yaka1130 的回复:] [quote=引用 4 楼 duanzi_peng 的回复:] join的是“关系”,不是“条件” 。 大于小于之类的属于条件运算符,自然要用在where 中。只有join。
你说的“关系”的表现方式只能是equlas? 不能大于或小于?[/quote] 难道一个表的id值小于或者大于另一个表的id值 就说他们有关系? “关系”建立在对等的基础之上。 比如一个id1=2,另一个表的id2=2,id2=3,id2=4 如果条件 id2>=id1 就不能说 id2=3,id2=4的数据 与id1=2的数据有关系。[/quote] er..........在你全部的业务逻辑应用里面,sql使用inner join,on后面都是等于号?[/quote] sqlserver 中on 之后用等于号。 linq 语法中用equals
正怒月神 2017-07-26
  • 打赏
  • 举报
回复
linq中不行。
Yaka 2017-07-26
  • 打赏
  • 举报
回复
為啥沒人發表~~~~~~~????
Yaka 2017-07-25
  • 打赏
  • 举报
回复
引用 7 楼 duanzi_peng 的回复:
[quote=引用 6 楼 yaka1130 的回复:] [quote=引用 4 楼 duanzi_peng 的回复:] join的是“关系”,不是“条件” 。 大于小于之类的属于条件运算符,自然要用在where 中。只有join。
你说的“关系”的表现方式只能是equlas? 不能大于或小于?[/quote] 难道一个表的id值小于或者大于另一个表的id值 就说他们有关系? “关系”建立在对等的基础之上。 比如一个id1=2,另一个表的id2=2,id2=3,id2=4 如果条件 id2>=id1 就不能说 id2=3,id2=4的数据 与id1=2的数据有关系。[/quote] er..........在你全部的业务逻辑应用里面,sql使用inner join,on后面都是等于号?
exception92 2017-07-25
  • 打赏
  • 举报
回复
引用 6 楼 yaka1130 的回复:
[quote=引用 4 楼 duanzi_peng 的回复:] join的是“关系”,不是“条件” 。 大于小于之类的属于条件运算符,自然要用在where 中。只有join。
你说的“关系”的表现方式只能是equlas? 不能大于或小于?[/quote] 难道一个表的id值小于或者大于另一个表的id值 就说他们有关系? “关系”建立在对等的基础之上。 比如一个id1=2,另一个表的id2=2,id2=3,id2=4 如果条件 id2>=id1 就不能说 id2=3,id2=4的数据 与id1=2的数据有关系。
Yaka 2017-07-25
  • 打赏
  • 举报
回复
引用 4 楼 duanzi_peng 的回复:
join的是“关系”,不是“条件” 。 大于小于之类的属于条件运算符,自然要用在where 中。只有join。
你说的“关系”的表现方式只能是equlas? 不能大于或小于?
Yaka 2017-07-25
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
建立关系本来就是 === 的意思,跟你说的什么别的东西根本无关。
建立关系的前提只有是“等于”,不能大于或小于吗?这奇怪吧 对于SQL关系型数据库,倒不如必须是外键引用。。。。。。
exception92 2017-07-25
  • 打赏
  • 举报
回复
join的是“关系”,不是“条件” 。 大于小于之类的属于条件运算符,自然要用在where 中。只有join。
  • 打赏
  • 举报
回复
这本来就是一个二值——非真既假的判断。
  • 打赏
  • 举报
回复
你把两个表对接,就是要告诉它用什么字段来对接。你自己发明什么新名词儿真的好吗?
  • 打赏
  • 举报
回复
建立关系本来就是 === 的意思,跟你说的什么别的东西根本无关。

8,497

社区成员

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

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