我正在使用Asp.Net Core com脚手架生成上下文和模型。然后我需要检查2个表之间的除外比较。在sql server中这项工作:
SELECT Id FROM AspNetUsers a
EXCEPT
SELECT UserId FROM OtherClass
但在上下文中无效。我尝试这个:
如何实现此参数?:_context.AspNetUsers.Except()
我尝试.FromSql
不成功...
public IActionResult Create()
{
ViewData["UserId"] = new SelectList(_context.AspNetUsers.FromSql(@"SELECT Id FROM AspNetUsers a EXCEPT SELECT UserId FROM OtherClass"), "Id", "UserName");
return View();
}
欢迎提出新想法。在此先感谢!
尝试一下
//will generate list of ids to be excluded
var exceptIds = _context.OtherClass.Select(oc => oc.UserId).ToList();
//will generate list of filtered ids
var filteredIds = _context.AspNetUsers.Where(netUser => !exceptIds.Contains(netUser.Id)).ToList();
这将反转Contain
,现在将在NOT IN
的列表中生成ID OtherClass.UserId
的列表
您也可以在一个查询中完成
var filteredIds = _context.AspNetUsers
.Where(netUser =>
!_context.OtherClass
.Select(r => r.UserId).Contains(netUser.Id))
.Select(filtered => filtered.Id).ToList();