Quelle serait la syntaxe correcte dans LINQ pour rechercher des enregistrements non nuls? J'utilise le code ci-dessous mais en vain.
Merci beaucoup pour toute aide.
var list = (from t in dal.table
where t.name != null);
Vous avez oublié de select
.
var list = (from t in dal.table
where t.name != null
select t);
101 C # Exemples LINQ: http://msdn.Microsoft.com/en-us/vcsharp/aa336746
J'ai rencontré le même comportement étrange. Le code C # est
public DbSet<Document> Documents { get; set; }
List<Document> = Documents
.Where(d => d.BusinessId = 818)
.Where(d => d.CurrencyId != null)
.ToList();
mais l'instruction SQL générée est la suivante:
exec sp_executesql N'SELECT
[Extent1].[DocumentId] AS [DocumentId],
[Extent1].[DateCreated] AS [DateCreated],
...
FROM [dbo].[Documents] AS [Extent1]
WHERE [Extent1].[BusinessId] = @p__linq__0',N'@p__linq__0 int',@p__linq__0=818
Clairement, LINQ ignore la clause .Where (d => d.CurrencyId! = Null).
Ma solution était la suivante:
List<Document> = Documents
.Where(d => d.BusinessId = 818)
.ToList() // <== Gel all documents and filter in memory
.Where(d => d.CurrencyId != null)
.ToList();
Remarque: Techniquement, nous déplaçons le filtre NOT Null de Linq-To-Sql à Linq-To-objects.
Très inefficace puisque nous sélectionnons TOUS les documents en mémoire et les filtrons (au lieu de filtrer au niveau de la base de données).
Dans mon cas, le nombre d'enregistrements est généralement faible, la solution a donc fonctionné pour moi.