linq中默认填充Select = null

Posted

技术标签:

【中文标题】linq中默认填充Select = null【英文标题】:Fill by default Select = null in linq 【发布时间】:2021-09-30 03:20:01 【问题描述】:

我有这句话 linq,用两个视图模型在一个选择中选择,问题是 在我的 loginviewmodel 中,并非所有的状态都等于收到,可能有空值,但是当将它们放在我的视图中时,我的网格中的某些列显示为空,如果 logviewmodel = null 但我希望看到默认情况下出现 N/A不知道怎么做,我把它作为JSON返回,因为我在服务器端使用数据表,我不知道是否也可以操作json

我分享我的 linq 句子

  var result = db.document.Select(d => new DocumentViewModel
  
       DocumentId = d.DocumentId,
       Name = w.name
       ReceivedLogs = d.Logs
      .Where(l => l.Status == Status.Received)
      .Select(l => new LogViewModel
      
         CurrentApprover = l.User,
         NameApprover = l.User.FullName
      ).FirstOrDefault()
      ).ToList();

谢谢

【问题讨论】:

【参考方案1】:

您可以检查 FirstOrDefault() 是否返回 null,然后使用默认的 LogViewModel:

     var result = db.document.Select(d => new DocumentViewModel
     
       DocumentId = d.DocumentId,
       Name = w.name
       ReceivedLogs = d.Logs
            .Where(l => l.Status == Status.Received)
            .Select(l => new LogViewModel
            
               CurrentApprover = l.User,
               NameApprover = l.User.FullName
            ).FirstOrDefault() ?? new LogViewModel 
                                          CurrentApprover = "N/A",
                                          NameApprover = "N/A" 
                                       
      ).ToList();

【讨论】:

以上是关于linq中默认填充Select = null的主要内容,如果未能解决你的问题,请参考以下文章

c# linq groupby是默认去掉重复行吗

使用 linq 填充 DataTable 对象 [关闭]

在linq中怎样进行排序操作

jqgrid动态填充select

使用 DataContext 从 LINQ 查询中填充 DataTable 的最快方法

将 LINQ 填充的 ViewModel 从业务逻辑层返回到控制器 - MVC