Consente di considerare una tabella con 2 colonne: ID (int) e Ruolo (stringa). Entrambi sono annullabili.Query LINQ-to-SQL che non restituisce riga quando la clausola where viene confrontata con il valore NULL
Ora supponiamo che i dati nelle due colonne:
ID Role
-- ----
1 NULL
2 Admin
La query è simile al seguente:
List<types> t1 = (
from a in datacontext.RoleTable
where a.Role != "Admin"
select a
).ToList();
ho pensato la domanda di cui sopra dovrebbe essere tornando il primo record della tabella come la sua colonna Role non è uguale a "Admin" ma la query restituisce una lista vuota.
Ora, quando ho utilizzare questa query:
List<types> t2 = (
from a in datacontext.RoleType
where a.Role != "Admin" && a.Role == DBNull.Value.ToString()
select a
).ToList();
ottengo la risposta corretta.
Qualcuno può dirmi perché la prima query non funziona, per favore.
FYI: se la colonna Ruolo nella prima riga della tabella viene modificata in User
anziché NULL
, la prima query funziona correttamente.
Sto usando SQL Express e LINQ a SQL.
Hai provato '.equals()'? –
Non è questo il punto che voglio sapere perché la prima query non si comporta come previsto. –