EF外键查询问题

t101lian 2017-03-07 03:25:20
var model = a.Select(n => n.b).Distinct().ToList();

如上, a查询的是A表, 里面有200条数据.。b关联的是B表, 里面有10调数据。
但是上面model 查询出来还是200条。应该是要<=10条数据才对。


...全文
347 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bwangel 2017-03-07
  • 打赏
  • 举报
回复
假设它们的主键都叫Id, 试一下: b.where(B=> a.Any(A=>A.b.Id == B.Id)).Distinct()
t101lian 2017-03-07
  • 打赏
  • 举报
回复
引用 3 楼 hanjun0612 的回复:
[quote=引用 2 楼 t101lian 的回复:] 明白了, 那要查询关联b表数据, 该怎么写?
如果你只是要过滤 null,那么直接 a.where(n=>n.b!=null).Select(n => n.b)。 不然的话你就使用 lambda join表达式。 [/quote] 我想查的就是b表的数据
正怒月神 2017-03-07
  • 打赏
  • 举报
回复
引用 2 楼 t101lian 的回复:
明白了, 那要查询关联b表数据, 该怎么写?
如果你只是要过滤 null,那么直接 a.where(n=>n.b!=null).Select(n => n.b)。 不然的话你就使用 lambda join表达式。
t101lian 2017-03-07
  • 打赏
  • 举报
回复
引用 1 楼 hanjun0612 的回复:
。。。。。 查询出来的数据的确应该是200条,因为无论有没有关联, 你这里都是以a为主的。 所以最多n.b为null。 这就像你去数据库里查询 a表的b外键一样。行数肯定是全部的。
明白了, 那要查询关联b表数据, 该怎么写?
正怒月神 2017-03-07
  • 打赏
  • 举报
回复
。。。。。 查询出来的数据的确应该是200条,因为无论有没有关联, 你这里都是以a为主的。 所以最多n.b为null。 这就像你去数据库里查询 a表的b外键一样。行数肯定是全部的。

17,740

社区成员

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

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