2010-05-13 35 views
8

Làm cách nào để dịch truy vấn SQL sau vào truy vấn LINQ có thể so sánh?Cách viết truy vấn SQL "Không Trong" trong LINQ?

select * from Dept 
where Id not in (
    Select Id 
    from Employee 
    where Salary > 100); 
+1

Ngoài ra, LinqPad là một công cụ hữu ích để hỗ trợ bằng văn bản và thử nghiệm LINQ truy vấn – CaffGeek

+0

trong trường hợp này bạn cũng có thể sử dụng phủ định logic: nơi Lương <= 100 –

+0

@ Chad..ya sẽ cố gắng có vẻ hữu ích @ CrazyJugglerDrummer tốt tôi đang cố gắng để làm một cái gì đó khác ít phức tạp hơn ... ya nhưng trong trường hợp này nó sẽ:) ... – Vishal

Trả lời

15

Hãy thử một cái gì đó như thế này:

var result = from d in Dept 
      let expensiveEmployeeIds = (from e in Employee.Employees 
             where e.Salary > 100 
             select e.Id) 
      where !expensiveEmployeeIds.Contains(d.Id) 
      select d; 
0

Làm thế nào về điều này?

var lowPaidEmps = from d in db.Dept 
        join e in db.Employees on d.Id equals e.Id 
        where e.Salary <= 100 
        select d; 
+2

Đó không phải là tương đương về mặt logic. Hãy tưởng tượng một bộ phận không có nhân viên (truy vấn ban đầu trả về nó, truy vấn này không). –

+0

Tôi rất vui khi bạn có được những gì bạn đang tìm kiếm. – Rob

Các vấn đề liên quan