其他异步方法调用的主要缓存查询

问题描述 投票:0回答:2

我有一个由多个查询共享的主子查询:

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();
}

可以做这样的事情吗?

非常感谢。

c# linq entity-framework-core
2个回答
0
投票

不应返回

List
,您应该返回
IQueryable
,然后可以进一步组合它,或者您可以在返回值上使用
ToListAsync

private IQueryable<MyCustomClass> GetFooQueryable()
{
    var t = _ctx.Table1
                .Where(...)
                .Select(s => new MyCustomClass { ... });
    return t;
}

-1
投票

是的,这是可能的。 您可以将同步方法更新为此

public List<OtherClass> MyAmazingMethod()
{
    var fooResult = Foo();

    return fooResult
        .Where(...)
        .GroupBy(...)
        .Select(s => new OtherClass { ... })
        .ToList();
}
© www.soinside.com 2019 - 2024. All rights reserved.