我目前有一个异步查询,如下所示,这很好,允许我使用FirstOrDefaultAsync / ToListAsync方法。
public async Task<X> FindXAsync(int x)
{
var q = from c in context.X
where c.Id == x
select c;
return await q.FirstOrDefaultAsync();
}
但是我试图将该查询扩展为选择新类
public async Task<XClass> FindXAsync(int x)
{
var q = from c in context.X
where c.Id == x
select new XClass (
c.Id,c.Header .........
);
return await q.FirstOrDefaultAsync();
}
对于上面你不能再使用FirstOrDefaultAsync()只能使用FirstOrDefault(),我想知道将这个功能变成异步方法的最有效方法是什么。 谢谢, 克里斯
答案 0 :(得分:3)
在这种情况下,最简单的答案可能只是进行(异步)第一次选择,然后创建所需的类型:
public async Task<XClass> FindXAsync(int x)
{
var q = from c in context.X
where c.Id == x
select c;
var c = await q.FirstOrDefaultAsync();
return new XClass (
c.Id,c.Header .........
);
}
答案 1 :(得分:1)
尝试使用泛型类型参数:
return await q.FirstOrDefaultAsync<XClass>();