我正在使用 EF6 并希望使以下查询完全异步:
await MyDataContext.ADbSet.
First(a => a.Something == "Something").
ASubCollection.
Select(x => new { x.SubCollectionId }).
ToListAsync();
这不起作用,我相信由于First()
返回实际实体和访问ASubCollection
成为一个ICollection
,而不是一个IQueryable
。
我能够使用以下代码解决此问题:
await MyDataContext.ADbSet.
Where(a => a.Something == "Something").
SelectMany(a => a.ASubCollection).
Select(x => new { x.SubCollectionId }).
ToListAsync();
但是,这似乎是“hacky”,因为我在使用 aWhere(...)
时应该使用 a First()
,因为我在编译时知道将只有一个元素满足查询。有没有更好的方法来做到这一点?