想象以下的方法。
public async Task<IHttpActionResult> Get(int id)
{
List<PageVirtualServer> pageVirtualServer = await context.PageVirtualServer
.Where(z => z.StatusPageId == id)
.ToListAsync();
List<StatusMessage> messages = await context.StatusMessages
.Where(x => pageVirtualServer.Any(
y => y.VirtualServerId == x.VirtualServerId))
.ToListAsync();
return Ok(messages);
}
以下异常会发生: "无法创建类型为'xy'的常量值。只支持原始类型或枚举类型在此上下文中使用。"
但是当将第一个查询嵌入到第二个查询中时,它确实可以工作, 我不理解。
为什么这种方法有效而第一个方法无效?
public async Task<IHttpActionResult> Get(int id)
{
List<StatusMessage> messages = await context.StatusMessages
.Where(x =>
context.PageVirtualServer
.Where(z => z.StatusPageId == id)
.Any(y => y.VirtualServerId == x.VirtualServerId))
.ToListAsync();
return Ok(messages);
}
能有人解释一下这种行为吗?
ToListAsync
返回的是Task<List<object>>
,而不是List<object>
。你需要解开result
。 - AD.Net