linq中如何处理空值?

2023-11-26

recordsList.ListOfRecords = new StudentRecordsBAL()
                                .GetStudentsList()
                                .Select(q => new StudentRecords()
            {
                _RollNumber = q._RollNumber,
                _Class = q._Class,
                _Name = q._Name,
                _Address = q._Address,
                _City = q._City,
                _State = q._State,
                _Subjects = q._Subject,
                _AttendedDays = new AttendanceBAL()
                                    .GetAttendanceListOf(q._RollNumber)
                                    .Where(date => date != null)
                                    .Select(date => 
                                        new DateTime(date._Date.Year, date._Date.Month, date._Date.Day))
                                    .Distinct()
                                    .ToList(),
                _AttendedSubjects = GetAttendedSubjects(q._RollNumber)                                            
        }).ToList(); 

方法,GetAttendanceListOf(q._RollNumber)上面的代码将返回数据库中的记录列表,如果传递的“roll-no”没有记录,则返回“null”。 linq 查询将终止并生成错误

“值不能为空”。

有没有办法处理这个错误并使 LINQ 跳转到下一步?


_AttendedDays = new AttendanceBAL()
    .GetAttendanceListOf(q._RollNumber)
    .Where(date => date != null)
    .Select(date => new DateTime(date._Date.Year, date._Date.Month, date._Date.Day))
    .Distinct()
    .ToList(),

问题出在跑步上Where()在空实例上。可能的解决方案:

1)修改GetAttendanceListOf如果没有出席则返回一个空列表(一般来说是个好主意,因为空对象模式通常是救星,对于集合来说,空集合在语义上通常与 null 类似)
2)如果您不控制该方法,请编写一个安全的扩展方法,该方法将在 null 的情况下返回空列表,例如

List<AttendanceType> SafeAttendanceList(this AttendanceBALType bal, RollNumber rn)
{
    return bal.GetAttendanceListOf(rn) ?? new List<AttendanceType>();
}

然后将其称为:

_AttendedDays = new AttendanceBAL()
    .SafeAttendanceListOf(q._RollNumber)
    .Where(date => date != null)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linq中如何处理空值? 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 如何从 Google Analytics 4 获取视图 ID?

    我尝试从 GA Google Analytics 检索有关我的网站的所有信息 我正在使用 laravel 和这个包https github com spatie laravel analytics让我的生活更轻松 然而 该软件包需要 GA
  • Pandas,groupby,其中列值大于 x

    我有一张这样的桌子 timestamp avg hr hr quality avg rr rr quality activity sleep summary id 1422404668 66 229 0 0 13 78 1422404670
  • 使用 GDT 保护模式下的汇编器跳转

    我目前正在使用 x86 Assembler 以提高我的低级编程技能 目前 我在 32 位保护模式下的寻址方案遇到了一个小问题 情况如下 我在 0x7e0 加载了一个程序 它将 CPU 切换到保护模式并跳转到代码中的相应标签 code to
  • 如何在 JavaScript 中获取输入文本值

    如何在 JavaScript 中获取输入文本值
  • Lucene 和特殊字符

    我正在使用 Lucene Net 2 0 来索引数据库表中的某些字段 其中一个字段是允许使用特殊字符的 名称 字段 当我执行搜索时 它没有找到包含特殊字符术语的文档 我这样索引我的字段 Directory DALDirectory FSDi
  • 角材料步进器在每次点击时动态添加新的步骤项目

    我在我的项目中使用有角度的材料 我想在每次点击时添加额外的步进器项目 mat step addItem button 我在这里创建了一个笨蛋 https stackblitz com edit angular enmq1z file app
  • 不重复 N 个元素的组合,不使用 for..to..do

    我想在列表中加载 N 个数字的组合而不重复 从而输入元素和组 例如 对于 4 个元素 1 2 3 4 我有 Group 1 1 2 3 4 Group 2 1 2 1 3 1 4 2 3 2 4 3 4 Group 3 1 2 3 1 2
  • mysql 查询 - 插入数据 unix_timestamp ( now ( ) ) 问题

    我有一个 INT 11 列 用于存储当前时间戳 以秒为单位 查询如下所示 INSERT INTO abc id timestamp VALUES UNIX TIMESTAMP NOW 不知道为什么 日期没有改变 当我发送查询时 列值没有改变
  • 在 Prometheus/PromQL 中合并/连接两个指标

    我有两个不同的 但相关的指标 metric 1 id abc id2 def metric 2 id abc id2 def 我的最终目标是在 Grafana 中实现以下功能 我计划使用 即时 值和 Grafana 的表格可视化小部件来显示
  • 土耳其语字符编码

    我尝试从不同的列表项创建新句子 当我用 unicode 打印它时 它给出错误 我可以正常打印 没有unicode 当我尝试将其发布到网站时 它出现了同样的错误 我认为如果我可以用 unicode 修复它 那么当我将其发布到网站时它就会起作用
  • 在 64 位计算机上使用 C# 和“BUILD x86”访问注册表

    我有一个应用程序 用 C 编写 在 Windows Server 2008 64 位 上运行 在此应用程序中 我必须检查一些有关 IIS 的注册表项 除其他外 我想访问密钥HKEY LOCAL MACHINE Software Micros
  • UnknownEntityTypeException:无法找到持久化器

    我想在 Wildfly 上使用 JPA 和 Spring 我尝试了这个配置 应用程序属性 spring jmx enabled false spring datasource jndi name java global production
  • 如何从 shell 检测 Mac OS X 中的当前区域设置

    我需要从命令行检测 OS X 中的当前区域设置 在 Linux Unix 上 我可以依赖 LANG 但并不总是设置它 http henrik nyh se 2007 10 displaying utf 8 Correctly in leop
  • 这两个查询是否相同 - GROUP BY 与 DISTINCT?

    这两个查询似乎返回相同的结果 这是巧合还是它们真的是一样的 1 SELECT t ItemNumber SELECT TOP 1 ItemDescription FROM Transactions WHERE ItemNumber t It
  • Android 自定义键盘 - 预览视图受限于父布局

    我创建了一个自定义键盘 它工作正常 除了顶部两行按键的预览视图显示得不够高 它们的垂直位置受到父布局的限制 这些屏幕截图说明了问题 0 和 8 的预览位置很好 但对于 5 和 2 则不然 键 0 的预览显示在按钮上方 键 8 的预览也显示在
  • 设备管理接收器在某些版本中无法工作

    我正在开发一款安全应用程序 可以保护设备免受陌生人的侵害 在我的应用程序中 如果用户尝试使用错误的 PIN 图案 密码解锁设备 我有一个功能应该从前置摄像头捕获图像 我有一个类似这样的代码 public class MyAdminRecei
  • 在 cython 中生成高斯随机数的最有效和可移植的方法是什么?

    我正在编写一个 cython 应用程序 我需要在紧密的嵌套循环中动态生成高斯随机变量 我希望在不引入任何额外依赖项 例如 GSL 的情况下执行此操作 对于我目前能够做到这一点的最小版本均匀随机即时数字 from libc stdlib ci
  • 带连接的 Codeigniter 活动记录更新语句

    这是我试图通过活动记录实现的查询 UPDATE Customer donations cd join Invoices i on i cd id cd cd id set cd amount 4 cd amount verified 1 W
  • Redis 和查询值

    Redis 在概念上与我使用的传统 SQL 数据库不同 我试图弄清楚它是否适合我的项目 我一直在四处寻找 但似乎找不到我的问题的答案 我需要存储一组用户 每个用户都有一个唯一的 ID 和多个与其关联的值 例如他们的姓名 看来我可以简单地将它
  • linq中如何处理空值?

    recordsList ListOfRecords new StudentRecordsBAL GetStudentsList Select q gt new StudentRecords RollNumber q RollNumber C