将sql转换为LINQ TOP 1 NOT in

本文关键字:NOT in TOP LINQ sql 转换 | 更新日期: 2023-09-27 18:06:05

如何将此SQL转换为LINQ?

Select Top 1 iD, Grad from tbl1 
WHERE tbl1.ID not in 
(Select GradId from tbl2 WHERE ID = 99469)

将sql转换为LINQ TOP 1 NOT in

看起来最简单的方法是:

var grads = 
    (from r in tbl2 
     where r.ID == 99469 
     select r.GradID);
var results = 
    (from r in tbl1
     where !grads.Contains(r.ID)
     select new { r.ID, r.Grad })
    .FirstOrDefault();

或者更简洁一点:

var grads = ...
var results = tbl1
    .Select(r => new { r.ID, r.Grad })
    .FirstOrDefault(r => !grads.Contains(r.ID));

以下行

 var query =
         (from c in db.tbl1
          where !(from d in db.tbl2
          select d.id)
               .Contains(c.id)
          select c).Take(1)