join 及一对多聚合
Sites 和 Topics 是一对多的关系,即 Sites 的某个 SiteId 在 Topics 中可能关联一条记录,也可能是多条,也可能没有。
如上代码,看似简单,实际包含了很多玄机。
join 多列(多条件)
前面讲的 join 都只有一个条件,要使用 and、&& 实现多个条件会发现要报错。解决办法有多个。
简单的如果是多个等于条件,可用 new:
如果是更复杂的,比如之前示例中的 CreatedOn 并没有与另外一个表关联,并且它是 >= 这种,像这种可以放在 where 或其他地方。
orderby
orderby 没什么要说的,很 SQL 很相像,只是 orderby 的写法不是 order by。
orderby 多列
orderby 子句中可以直接像 SQL 一样写多个字段,逗号隔开,没有什么特别说明的,这里只是说,如果不是说 orderby 语句,而是用 OrderBy、ThenBy 方法要注意的。要注意的就是:OrderBy 多个连用时,是后面的优先级高。
t.OrderBy(i=>i.TopicId).OrderBy(i=>i.ColumnId) 等效 SQL order by ColumnId, TopicId。
t.OrderBy(i=>i.TopicId).ThenBy(i=>i.ColumnId) 等效 SQL order by TopicId, ColumnId
还有带 OrderByDescending、ThenByDescending,用法一样,只是表示降序。
group by
要注意,group by 不像 orderby 一样合在一起,而是中间还有个空格。并且 group by 的内容要 into。
group by 多列
多列怎么写呢?跟前面说的一样,用 new 对象:
参考资料