Подтвердить что ты не робот

Не null в LINQ

Каким будет правильный синтаксис в LINQ, чтобы найти записи, которые не являются нулевыми? Я использую код ниже, но не помогло.

Большое спасибо за любую помощь.

              var list = (from t in dal.table
                          where t.name != null);
4b9b3361

Ответ 1

Вы забыли select.

var list = (from t in dal.table
            where t.name != null
            select t);

Ответ 3

Я столкнулся с тем же странным поведением. Код С#

public DbSet<Document> Documents { get; set; }
List<Document> = Documents
    .Where(d => d.BusinessId = 818)
    .Where(d => d.CurrencyId != null)
    .ToList();

но сгенерированный оператор SQL:

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    

Ясно, что LINQ игнорирует предложение .Where(d = > d.CurrencyId!= null).

Мое решение было следующим:

List<Document> = Documents
    .Where(d => d.BusinessId = 818)
    .ToList() // <== Gel all documents and filter in memory
    .Where(d => d.CurrencyId != null)
    .ToList();

Примечание. Технически мы перемещаем фильтр NOT Null из Linq-To-Sql в Linq-To-objects.

Очень неэффективно, так как мы выбираем ВСЕ документы в памяти и фильтруем там (вместо фильтрации на уровне db).

В моем случае количество записей обычно невелико, поэтому решение для меня работало.