Cho phép xem xét một bảng có 2 cột: ID (int) và Role (string). Cả hai đều không có giá trị.truy vấn LINQ-to-SQL không trả về hàng khi mệnh đề where so sánh với giá trị NULL
Bây giờ giả sử rằng các dữ liệu trong hai cột là:
ID Role
-- ----
1 NULL
2 Admin
Truy vấn trông như thế này:
List<types> t1 = (
from a in datacontext.RoleTable
where a.Role != "Admin"
select a
).ToList();
tôi nghĩ các truy vấn trên nên được trả lại hồ sơ đầu tiên của bảng như cột Vai trò của nó không bằng 'Quản trị' nhưng truy vấn trả về một danh sách trống.
Bây giờ khi tôi sử dụng truy vấn này:
List<types> t2 = (
from a in datacontext.RoleType
where a.Role != "Admin" && a.Role == DBNull.Value.ToString()
select a
).ToList();
tôi nhận được câu trả lời đúng.
Ai đó có thể cho tôi biết tại sao truy vấn đầu tiên không hoạt động.
FYI: Nếu cột Vai trò trong hàng đầu tiên trong bảng được thay đổi thành User
thay vì NULL
thì truy vấn đầu tiên hoạt động tốt.
Tôi đang sử dụng SQL Express và LINQ to SQL.
Các bạn đã thử 'Equals() '? –
Không có thats không phải là điểm tôi muốn biết tại sao truy vấn đầu tiên không hoạt động như mong đợi. –