如何解决在 LINQ 中使用 SQL“Not In”
我有两个列表。我正在尝试编写 LINQ 查询。
我的列表:产品、经销商。
var productList=_context.ProductList
.Where(x=> x.Date=>new DateTime(2021,02,01) ).ToList();
我想将 T-SQL 约束(如下)添加到我的 LINQ,我尝试使用 foreach
但我无法处理它。
DealerCode Not IN(Select DealerCode from Dealers D With (nolock) Where D.ProductId=P.ProductId)
我不想像 !x.DealerCode.Contains(.....)
那样做,因为我的列表太大了,我将在 8 个不同的查询中使用这个约束。我正在搜索如何以更有效的方式做到这一点。
评论后编辑:
T-SQL 查询
Select * From ProductList P
Where Date='2021-02-01'
AND DealerCode Not IN(Select DealerCode from Dealers D With (nolock) Where D.ProductId=P.ProductId)
我正在尝试在 LINQ 中编写查询
解决方法
你可以使用这个查询
var query = _context.ProductList
.Where(a => a.Date != (_context.ProductList
.Join(_context.Dealers,right => right.ProductId,left => left.ProductId,(right,left) => new
{
right = right,left = left
})
.Where(x => x.left.Date == a.Date)
.Select(y => y.left.Date)).FirstOrDefault());
,
为您的模型添加适当的导航属性。产品应该有一个名为“经销商”的导航属性,经销商应该有一个名为“产品”的导航属性。完成后,您的查询将变为:
var query = _context.ProductList
.Where(p => p.Date = new DateTime(2021,02,01))
.Where(p => !p.Dealers.Any());
当然,假设您正在寻找尚无经销商的产品。或者类似的东西。如果没有 ProductList、Dealers 等的完整模型,很难判断。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。