首页 > 解决方案 > 查询主体必须以核心方法上的 select 子句或 group 子句结尾

问题描述

在 LINQ 中对查询进行编码时出现错误:

var shortsms = await (from url in _dbContext.UrlBank
                      where url.LockBatchId ==
                          (from batch in _dbContext.LockBatch
                           where batch.LockBatchId.Equals(38)
                                 && 
                                 url.IsAssigned == 0 
                                 && 
                                 url.IsLocked.Equals(1)
                           )
                      );

结果我需要 UrlBank 中 ShortUrl 的 firstOrDefault。

标签: c#linqasp.net-core

解决方案


显示错误消息是因为您缺少两个select 子句。它应该是这样的:

var shortsms = await (from url in _dbContext.UrlBank
                          where url.LockBatchId ==
                      (from batch in _dbContext.LockBatch
                           where batch.LockBatchId.Equals(38) && url.IsAssigned == 0 && url.IsLocked.Equals(1) select batch.Id) select url.ShortUrl);

推荐阅读