为什么我不能这样做:
if (await query.AnyAsync())
{
return new ObjectResult(query);
}
else
{
return NotFound();
}
到此:
await query.AnyAsync() ? return new ObjectResult(query) : return NotFound();
如何快捷方式?
答案 0 :(得分:4)
你错过了演员阵容。要使用条件表达式,您需要将它们转换为相同的返回类型,例如
return await query.AnyAsync() ? (ActionResult)new ObjectResult(query) : (ActionResult)NotFound();
答案 1 :(得分:0)
这不是你要求的,但无论如何:
这些行错了:
let rec length_aux len = function
a::l -> length_aux (len + 1) l
| [] -> len
let length l = length_aux 0 l
您的查询已经实现,在这种情况下,查看它是否有任何异步条目是没有意义的。这将是简单而简单的开销。或者它没有实现,在这种情况下你的if (await query.AnyAsync())
{
return new ObjectResult(query);
}
调用是无用的,因为它只会实现它,然后检查它是否有条目然后再次实现它以获得结果。如果在这些调用之间源中发生了某些变化,那么第二个调用也可能不包含任何条目。最好的情况是它的运行时间是同一结果的两倍。
所以如果你想简化和纠正它:
Any
它不会变得更简单。这里不需要三元运算符。
如果您想要三元运算符,则需要确保它获得相同类型的表达式,而不是语句({{ 1}}是一个语句,var materialized = query.ToList();
if (materialized.Count != 0)
{
return new ObjectResult(materialized);
}
return NotFound();
是一个表达式):
return 0;