Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Truy Vấn Dữ Liệu với LINQ bằng Lambda Expression

09:42 14-05-2018 1.707 lượt xem 2 bình luận 14:35 14-05-2018

Mọi người cho em hỏi . em có csdl như ảnh sau :  Cơ sở dữ liệu minh họa

với mong muốn select xuống csdl để lấy bảng COMPANY sao cho COMPANY.ID  bằng iID được truyền xuống và ID = COMPANY_ID của  EMLOYEE có USERNAME = userName được truyền xuống 
câu lệnh SQL được ghi ra như sau : 

SELECT 
    CO.* 
FROM 
    COMPANY CO 
WHERE 
    CO.ID = '5' 
    AND CO.ID <> (SELECT COMPANY_ID 
                  FROM dbo.EMPLOYEE 
                  WHERE USERNAME = 'ADMIN')

Mình đã tìm ra giải pháp để thực hiện câu lệnh SQL trên . Tuy nhiên mình vẫn thắc mắc 

Với câu lệnh này : 

var obj = db.COMPANies.SingleOrDefault(x => x.ID == iID && x.ID != x.EMPLOYEEs.Where(z => z.USERNAME == userName).SingleOrDefault().COMPANY_ID);

tất nhiên là với câu lệnh  này nó không ra kết quả mong đợi .  điều mình thắc mắc là tại sao x ở trong câu lệnh sau

db.COMPANies.SingeOrDefault (x => <Ở trong này x có thể . đến EMPLOYEE>)

có thể gọi như thế này 

x.EMPLOYEEs.Where(....)

Nhưng nó lại không ra kết quả mong đợi . mặc dù thấy nó rất ư là logic 

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 13:39 14-05-2018

bạn đang k hiểu bản chất LinQ thật

khi x.Table => nó ra 1 TQuery => ra danh sách

Trong câu truy vấn bạn không nên viết thêm 1 câu truy vấn khác. Vì trong phạm vi LinQ nó ứ chịu mấy xử lý phức tạp. Nên bạn cố gắn tách nó ra thành nhiều câu đơn giản và truy vấn tuần tự

Câu hỏi mới nhất