在 Linq 中将 null 替换为空

in Linq replace null to empty

var ch = _context.xxtu_nintex_emp_data_v
         .Where(o => o.LOGIN_USER_NAME ==userId.ToUpper())
         .Select(emp => new
         { OTHERMOBILENO = emp.OTHERMOBILENO ?? "" })
         .ToList().SingleOrDefault();

结果是

当使用 toList() 时我得到了我想要的但是它太慢了

var ch = _context.xxtu_nintex_emp_data_v.ToList()
         .Where(o => o.LOGIN_USER_NAME ==userId.ToUpper())
         .Select(emp => new
         { OTHERMOBILENO = emp.OTHERMOBILENO ?? "" })
         .ToList().SingleOrDefault();

结果是

I use code first approach api and Microsoft.EntityFrameworkCore

一些你可以尝试的事情

  1. 在条件之后调用ToList,只从数据库中获取数据的一个子集

     var ch = _context.xxtu_nintex_emp_data_v
          .Where(o => o.LOGIN_USER_NAME == userId.ToUpper())
          .ToList() //<-- here
          .Select(emp => new
          { OTHERMOBILENO = emp.OTHERMOBILENO ?? "" })
          .ToList().SingleOrDefault();
    
  2. Select 移到上次 ToList 调用后

     var ch = _context.xxtu_nintex_emp_data_v
          .Where(o => o.LOGIN_USER_NAME == userId.ToUpper())
          //<-- re-arrange ToList/Select
          .ToList()
          .Select(emp => new { OTHERMOBILENO = emp.OTHERMOBILENO ?? "" }) 
          //<-- 
          .SingleOrDefault();
    
  3. 重新整理一下

     var emp = _context.xxtu_nintex_emp_data_v
          .Where(o => o.LOGIN_USER_NAME == userId.ToUpper())
          .SingleOrDefault();
    
     var ch = new { OTHERMOBILENO = emp?.OTHERMOBILENO ?? "" };