我有以下型号
public class Account
{
public int Id { get; set; }
public List<Note> Notes { get; set; }
}
我正在尝试查询我的nhibernate存储库以计算特定帐户的笔记数。
return this.Data.Where(x => x.Id == accountId).Select(x => x.Notes).Count();
然而,无论有多少音符,它总是返回1.
我尝试以最有效的方式执行此操作,而无需获取帐户对象,然后计算笔记数。
任何人都可以建议Linq等效于以下SQL。
SELECT Count(*) FROM NoteToAccount WHERE AccountId=?
其中NoteToAccount是位于Account和Note表之间的链接表。
答案 0 :(得分:4)
您将返回IEnumerable<List<Note>>
,其中包含一个元素,即该帐户的备注列表。
您可以使用SelectMany
代替Select
将其展平为一个大型实体,或者您可以使用:
this.Data.First(x => x.Id == accountId).Notes.Count;
我当然假设accountId是主键,所以你只能得到一个项目。您也可以使用Single
代替First
,以确保您只获得一件商品。
答案 1 :(得分:2)
您想要使用
.SelectMany(x => x.Notes)