这是今天在实际开发中遇到的一个问题,需求是查询未分类的博文列表(未加入任何分类的博文),之前是通过存储过程实现的,今天用EF实现了,在这篇博文中记录一下。

博文的实体类BlogPost是这样定义的:

public class BlogPost
{
public int Id { get; set; } public string Title { get; set; } //.... public ICollection<BlogCategory> Categories { get; set; }
}

分类的实体类BlogCategory是这样定义的:

public class BlogCategory
{
public int CategoryId { get; set; } public string Title { get; set; } //... public ICollection<BlogPost> Posts { get; set; }
}

EF(Entity Framework)中多对多关系是这样定义的:

modelBuilder.Entity<BlogPost>()
.HasMany(p => p.Categories)
.WithMany(c => c.Posts)
.Map(link =>
{
link.MapLeftKey("PostId");
link.MapRightKey("CategoryId");
link.ToTable("blog_links");
});

BlogPost与BlogCategory是多对多关系,现在的需求是查询与BlogCategory没有关系的BlogPost,这个LINQ查询代码该如何写呢?

。。。

今天太忙,没时间写更多文字了,直接上代码吧:

.Where(p => !p.Categories.Any(c => c.Posts.Select(cp => cp.Id).Contains(p.Id)));

最新文章

  1. 飞机大战编写以及Java的面向对象总结
  2. asp.net MVC控制器中返回JSON格式的数据时提示下载
  3. phpmyadmin Wrong permissions on configuration file, should not be world writable!
  4. Android SDK Manager无法更新的解决
  5. openurl 跳转
  6. css3 进度条
  7. SAFS Distilled --- 9 April 2015 to 16 April 2015
  8. MVC 读书笔记
  9. 关于js的兼容问题(小办法)!
  10. bzoj 1576: [Usaco2009 Jan]安全路经Travel 树链剖分
  11. 开始lisp的旅程
  12. POJ 2699 战斗小王子
  13. 简化日常工作之三:自己写一个CI脚手架
  14. mysql索引类型和索引方法
  15. ACM-ICPC 2018 南京赛区网络预赛(A, J)
  16. sping入门
  17. day03 变量 运算符 基本数据类型 输出功能 格式化输出
  18. 不同路由器下远程ssh登录Beaglebone系统(通过路由器端口转发,配合花生壳的DDNS功能)
  19. day32-常见内置模块一(random、time、datetime、os、sys)
  20. python 进程、线程、协程感悟

热门文章

  1. 内置对象(Session、Application、ViewState)
  2. nginx配置文件注释
  3. SQL镜像资料
  4. Ubuntu 安装 fcitx 输入法
  5. Appium学习路-打包apk和ipa篇
  6. Redis和Memcached对比
  7. 安卓 io流 写入文件,再读取的基本使用
  8. EXCEL工作表保护密码忘记了,如何撤消工作表保护?
  9. 使用GITHUB的体会
  10. [Linux]CentOS下安装和使用tmux