我有这个子查询
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'和类型的操作数"任务">
这意味着你试图比较Guid
和Task<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