1
我试图从一个一对多的关系,一个IQueryable获取实体的集合,所以我可以从获取此之前筛选数据向下数据库。EF:一个一对多的关系 - 查询数据的一个子集
要清楚,请看下面的例子:
我现在有一个实体的“用户”,这有照片的集合:
public virtual ICollection<Picture> Pictures{ get; set; }
图片实体可能会或可能不属于用户,因此,它的定义中没有User属性。
用户可能有数以千计的照片,但我想选择第10例如由Picture.Id订购。有没有办法做到这一点?
也许大意是这样的:
IQueryable<ICollection<Picture>> pictures = context.Users.Where(u=>u.UserId == userId).Select(c => c.Pictures)
谢谢!
这将是密集的数据?如在,这将获取所有数千张照片,然后订购并拿走我想要的?或者它会很懒,只选择我要求的那些,例如,前10张图片 – Karan
LINQ尽可能地很懒。如果这是CLR对象或SQL数据库的集合 - 是的,这很懒!如果不是,LINQ2SQL将毫无用处。 :)实际上,这个LINQ表达式不会被评估,直到你强迫它变成这样 - 要么用'.ToList()'标记它,要么通过迭代器块访问它。 –
那么如果我使用第一行,它会评估所有的图片? (10)不是惰性的,而第二块代码(在LINQ下是()懒惰?) – Karan