无法转换实体框架核心中的子查询



我有这个子查询

select * from MetaInfo where MetaInfoParentId = (select id from MetaInfo where KeyName='CATEGORIA' and Value = 'PAISES') 

我试图重写这个实体框架核心,但有这个错误:

return await _appDbcontext.MetaInfo.Where(m => m.Id == _appDbcontext.MetaInfo
.Where(b => b.KeyName.Equals("CATEGORIA") && b.Value.Equals(category)
).Select(b => b.Id).ToListAsync());

cs0019操作符'=='不能应用于'Guid'和'Task'类型的操作数

错误显示

cs0019操作符'=='不能应用于'Guid'和类型的操作数"任务">

这意味着你试图比较GuidTask<List<Guid>>,这是不可能的。

可以通过使用.Contains.Any函数来实现。

方法1:使用.Contains函数

return await _appDbcontext.MetaInfo
.Where(m => _appDbcontext.MetaInfo
.Where(b => b.KeyName.Equals("CATEGORIA") 
&& b.Value.Equals(category))
.Select(b => b.Id).Contains(m.Id))
.ToListAsync();

方法2:使用.Any函数

return await _appDbcontext.MetaInfo
.Where(m => _appDbcontext.MetaInfo
.Any(b => b.KeyName.Equals("CATEGORIA")
&& b.Value.Equals(category) && b.Id=m.Id))
.ToListAsync();

有关.Contains的更多信息,请阅读MSDN

有关.Any的更多信息,请阅读MSDN

相关内容

  • 没有找到相关文章