我有一个由多个查询共享的主子查询:
private List<MyCustomClass> Foo()
{
var t = _ctx.Table1
.Where(...)
.Select(s => new MyCustomClass { ... })
.ToList();
// IMemoryCache the result here
return t;
}
理想情况下,此方法可以是同步或异步的,是否有效并不重要。
我想在异步查询中使用它的结果:
public Task<List<OtherClass>> MyAmazingMethod()
{
return await Foo()
.Where(...)
.GroupBy(...)
.Select(s => new OtherClass { ... })
.ToListAsync();
}
可以做这样的事情吗?
非常感谢。
不应返回
List
,您应该返回 IQueryable
,然后可以进一步组合它,或者您可以在返回值上使用 ToListAsync
。
private IQueryable<MyCustomClass> GetFooQueryable()
{
var t = _ctx.Table1
.Where(...)
.Select(s => new MyCustomClass { ... });
return t;
}
是的,这是可能的。 您可以将同步方法更新为此
public List<OtherClass> MyAmazingMethod()
{
var fooResult = Foo();
return fooResult
.Where(...)
.GroupBy(...)
.Select(s => new OtherClass { ... })
.ToList();
}