используя лямбда-выражения LINQ, получаем столбцы со значениями NULL - PullRequest
2 голосов
/ 13 января 2012

Я хочу получить результат, когда значения столбцов равны NULL, используя выражения LINQ

search.AddCriteria(x => x.LogStatus == 
Inventory.AffStatusToChar((EAffidavitLogStatus)byte.Parse(cmbLog.SelectedValue)));

public void AddCriteria (Expression<Func<T, bool>> criteria) {
        if (_where == null) { _where = w => true; }
        _where = And(criteria);
    }


private Expression<Func<T, bool>> And (Expression<Func<T, bool>> expr) {
        return Expression.Lambda<Func<T, bool>>(Expression.And(
                _where.Body,
                Expression.Invoke(expr, _where.Parameters.Cast<Expression>())
            ), _where.Parameters);
    }

//This below part is use to execute the Linq
//IQueryable<T> result = db.GetTable<T>();
//result = result.Where(_where);

результат, где деталь выглядит как WHERE ([t0].[LogStatus]) = @p5) вижу, я хочу IS NULL

Я хочу запрос, подобный этому

SQL query : `select * from xyz where abc is NULL`

но приведенное выше выражение LINQ преобразуется в select * from xyz where abc=NULL, который дает другой результат.

Кто-нибудь сталкивался с такой проблемой? как может IS NULL в выражении LINQ достичь этого?

Ответы [ 2 ]

0 голосов
/ 14 января 2012

эй, вы можете проверить это сообщение (Linq и Nullable Values) ИЛИ (SQL ISNULL с LINQ)

Вы можете попробовать

var user = from u in Users
join uc in UserClients on u.Id equals uc.UserId
into myuserwithclient
from m in myuserwithclient.DefaultIfEmpty()
select new {
 Id=u.Id,
 FirstName=u.FirstName,
 LastName=u.LastName,
 UserId=m.UserId,
 MobileNo = m.MobileNo  ?? "N/A"
};
var nullvalues = user.where( u=>u.MobileNo== "N/A");
0 голосов
/ 13 января 2012

Не берите в голову, я понял это сам, вот решение, которое я сделал

search.AddCriteria(x => !(x.LogStatus!=null));

это возвращает запрос как

WHERE (NOT (UNICODE([t0].[LogStatus]) IS NULL ))

тада !! это то, что я ожидал ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...