使用LINQ Lambda表达式可以得到值为NULL的列

本文关键字:NULL 的列 LINQ Lambda 表达式 使用 | 更新日期: 2023-09-27 18:20:07

我想使用LINQ表达式获得列值为NULL的结果

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表达式正在转换为CCD_ 3给出了不同的结果。

有人经历过这种问题吗?LINQ表达式中的IS NULL如何实现这一点?

使用LINQ Lambda表达式可以得到值为NULL的列

没关系,我自己认为这是我做的解决方案

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

这将返回类似的查询

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

塔达!!这正是我所期望的。。

嘿,你可以检查这篇文章(Linq和Nullable Values)或(SQL ISNULL with 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");