当 DateTime 字段为 null 时,LINQ 中“指定的转换无效”

2023-12-09

我遇到问题了。我的代码使用 LINQ。

var resultCases = from row2 in dtCases.AsEnumerable()
                  where row2.Field<int>("caseID") == caseID2
                  select new
                  {
                              caseName = row2["caseName"].ToString(),
                              caseCourtPlace = row2["caseCourtPlace"].ToString(),
                              caseCourtRef = row2["caseCourtRef"].ToString(),
                              caseOfficeRef = row2["caseOfficeRef"].ToString(),
                              effectiveDate = ((DateTime)row2["caseEffectiveDate"]),
                              closedDate = ((DateTime)row2["caseClosedDate"]),
                              caseFolderPath = row2["casesFolderPath"].ToString(),
                              category = row2["categoryName"].ToString(),
                              department = row2["departmentName"].ToString(),
                              empName = row2["empName"].ToString(),
                              judgeName = row2["judgeName"].ToString(),
                              asName = row2["asCasesName"].ToString(),
                  };

If closedDate or effectiveDate return DBnull.Value, I get

InvalidCastException 未处理 - 指定的强制转换无效。

那么我该如何防止这个错误呢?


tldr; 问题有两个:DataTable 使用DBNull.Value代表“空”值,并且两者都不是DBNull.Value or null可以铸造成DateTime.

The Field<T>后来添加了扩展方法,以便更轻松地处理具有 null 值的 DBNull 和 Nullable/引用类型;它还将转换隐藏在强类型签名后面。这些LINQ 到数据集扩展方法知道如何绘制地图DBNull.Value to null作为适当的.

由于这个使用row.Field<DateTime?>("caseEffectiveDate")将返回either the DateTime?带有一个值(如果查询返回一个值)或null,如果服务器返回不兼容的值,它也可能抛出异常 - 但它会never return DBNull.Value.

然而,标准row["caseEffectiveDate"]将返回一个DateTime值(或其他类型)或DBValue.Null这是not可投射到DateTime?(更不用说一个DateTime)并导致所描述的错误。

以下是如何最小化重现此异常:

object v = DBNull.Value;
DateTime dt = (DateTime)v;

不过,转换一个就好了null to a DateTime?:

object v = null;
DateTime? maybeDt = (DateTime?)v;

然后将其合并到DateTime如果需要的话:

object v = null;
DateTime? dt = (DateTime?)v ?? DateTime.MinValue;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 DateTime 字段为 null 时,LINQ 中“指定的转换无效” 的相关文章

  • 使用 Unity 在构造函数中使用属性依赖注入

    好的 我在基类中定义了一个依赖属性 我尝试在其派生类的构造函数内部使用它 但这不起作用 该属性显示为 null Unity 在使用 container Resolve 解析实例后解析依赖属性 我的另一种选择是将 IUnityContaine
  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • std::cout 和 std::wcout 有什么区别?

    在c 中 有什么区别std cout and std wcout 它们都控制流缓冲区的输出或将内容打印到控制台 或者它们只是相似吗 它们作用于不同的字符类型 std cout uses char作为字符类型 std wcout uses w
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 使用 C 语言使用 strftime() 获取缩写时区

    我看过this https stackoverflow com questions 34408909 how to get abbreviated timezone and this https stackoverflow com ques
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • R 中的微秒时间戳

    在 CSV 文件中 我有几列 其中一列有时间戳 其中每个时间戳是今天午夜经过的微秒 每个 csv 文件仅包含一天内的数据 因此这并不含糊 我的问题是 如何将这些微秒时间戳解析为 R 多谢 我的 CSV 文件的一部分 34201881666
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • 如何在Windows窗体应用程序的DataGridView行中动态添加控件?

    我的 DataGridView 每行都有不同的控件类型 现在我想根据该控件类型在每行中创建控件 这可能吗 如果是 那么如何 您可以在网格的 OnRowDatabound 上添加控件 然后您可以将控件添加到您的行 要将控件添加到单元格 请使用
  • 背景大小:涵盖性能问题

    我在使用大量元素时遇到性能问题 尤其是在 Safari 中 background size cover 我已经添加transform translate3d 0 0 0 这确实有一点帮助 但没有我想要的那么多 如果可能的话 我真的在寻找纯C
  • python argparse 当使用特定选项时忽略其他选项

    我正在编写一个 python 程序 我希望有一个以特定方式运行的命令行界面 命令行界面应接受以下调用 my prog test svg foo my prog font Sans test svg foo 它将生成一个带有单词的 svgfo
  • Lollipop 5.0.2 中 WIFI/3G/4G 位置返回 0.0

    我正在尝试根据以下内容获取位置WiFi 3G 4G连接但总是返回0 0 as latitude and longitude 如果使用相同的代码GPS ON然后它就可以工作了 所以从 4 4 开始有些东西发生了变化 还尝试了以下链接 但它也不
  • 如何在 helm 图表中使用值文件传递文件?

    我想将证书传递给舵图 目前我正在使用 set file global dbValues dbcacertificate server crt 传递证书 但我想传递舵图值文件中的文件 Values yaml 文件读取 global dbVal
  • WPF 中将窗口锚定到屏幕边缘

    我决定通过在 Visual Studio 2010 中编写一个音乐播放器来自学 C 我选择了 WPF 因为据我所知 它听起来像是一个很好的皮肤基础 我想对我的窗口进行编程 使其具有以下行为 如果窗口到达屏幕边缘 10 像素左右 它将捕捉到屏
  • Adobe Air Javascript API [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 好吧 我觉得这是一个愚蠢的问题 但我在 Google 上确实找不到 Adob e AIR Javascript 的 API 我正在尝试访问文件系统和
  • Android 构建 apk 更改原始 png 文件

    最近 我从 SDK Tools r11 升级到 SDK Tools r16 后 某些设备出现了问题 我发现它与纹理相关 现在回顾我使用 SDK Tools r11 创建的 APK 文件 其中包含原始文件中纹理的精确副本 但是使用 SDK T
  • 在自定义 ArrayList 中仅添加一次项目

    我已经制作了自己的自定义 ArrayList 如下所示 public class Points String hoodName Double points Integer hoodId public Points String hN Dou
  • 在 R 中使用附加变量创建边列表

    我有这样的数据 ID c rep ID1 3 rep ID2 2 ID3 rep ID4 2 sex c rep male 3 rep female 2 female rep male 2 item c a b c a c a b a df
  • 无法创建 Facebook 应用程序

    第一次尝试创建 Facebook 应用程序 浏览到https developers facebook com apps它有一个在创建链接之前注册的链接 您只需接受条款和条件即可 现在它说 创建一个应用程序来启动 但是没有按钮可以单击来创建应
  • 专门使用 Github actions 为 iOS 构建 swift 包

    我有 iOS 应用程序的 swift 包 它需要UIKit跑步 我不想使用 Github 操作构建这个包 这就是我的工作流程 name Swift on push branches main pull request branches ma
  • 如何在 MVC 3 中将 WebForms .ascx 显示为部分视图

    我正在构建一个新的 ASP NET MVC 3 应用程序 在此应用程序中 我想在我的新 MVC razor 应用程序中的覆盖层中显示旧的 WebForms 用户控件 ascx ascx cs 作为部分视图 我在网上找不到任何有关执行此操作的
  • 静态链接与动态链接

    在某些情况下 是否有任何令人信服的性能原因来选择静态链接而不是动态链接 反之亦然 我听过或读过以下内容 但我对这个主题的了解还不够 无法保证其真实性 1 静态链接和动态链接之间的运行时性能差异通常可以忽略不计 2 如果使用使用配置文件数据来
  • 为什么我的打印函数将 () 和 "" 与语句一起打印?

    这是我针对绝对初学者 Python 编程挑战的代码 food input What is your favorite entree dessert input What is your favorite dessert print nI a
  • 使用可变模板参数构建枚举

    我有一个相当简单的变体类 它支持一组预定义的类型 并提供一个枚举来指示哪些可用类型当前处于活动状态 像这样的事情 class variant enum class type integer real string etc type acti
  • Eclipse 2023-06 突然不再自动完成“sysout”

    虽然我认识到这个问题之前已经被问过 但我尝试了多个不同线程的解决方案 但到目前为止还没有解决方案 5 天前 当我使用 Eclipse 时 我没有任何问题 现在到今天我突然无法使用 ctrl space 自动完成 sysout 据我所知 Ec
  • 在 C 中将数组作为参数传递

    我 认为我 明白 如果数组是在编译时在堆栈上声明的 则只能检索数组的大小 使用 sizeof 例如 int my array 1 2 3 sizeof my array 3 一旦你开始使用指针 你就会失去这个长度信息 例如如果将 int 指
  • 如何在 Spring RestTemplate 中使用以 JSON 表示的查询参数?

    我需要使用 Spring RestTemplate 向具有表示为 JSON 的查询参数的 HTTP 端点发出请求 restTemplate getForObject apiRoot path object myObject Response
  • 当 DateTime 字段为 null 时,LINQ 中“指定的转换无效”

    我遇到问题了 我的代码使用 LINQ var resultCases from row2 in dtCases AsEnumerable where row2 Field