【问题标题】:Finding DataSet DateTime value using C# DateTime input in .net 3.5 (mobile)在 .net 3.5(移动)中使用 C# DateTime 输入查找 DataSet DateTime 值
【发布时间】:2018-01-10 20:41:17
【问题描述】:

由于我无法控制的原因,我发现自己使用的是 .net mobile 3.5。我需要能够在主键为 DateTime 的 DataTable 上使用 Rows.Find(Object) 函数。

例如:DataRow temp = exDataSet.exDataTable.Rows.Find(exDateTime);

我无法使 C# DateTime 值与存储在 DataTable 中的值匹配。

根据这些论坛和其他资源的指导,我尝试更改 DataColumn 的 DateTimeMode,我尝试将 DateTime 转换为 SqlDateTime,并且我尝试了(不太需要).ToString("yyyy-MM-dd HH:mm:ss") 函数,全部为否利用。另外,据我所知,我无法使用 DateTime2。

有什么建议吗?

【问题讨论】:

  • 问题是否特定于 .net mobile 3.5?您可以在 c# 桌面控制台应用程序或.net fiddle 中重现该问题吗?此外,从DateTime.Equals()docs:如果它们的 Ticks 属性值相等,则 t1 和 t2 相等。他们的Kind 属性值在相等性测试中不被考虑。 也许您表中的DateTime 键在您打印到字符串时看不到的时钟滴答有一些微小差异?
  • 问题本身并不特定于.net mobile 3.5,但解决方案可能是。其他地方的某些功能和建议的解决方案(例如 DateTime2)仅在更高版本或非移动版本中引入。

标签: c# datetime mobile visual-studio-2008 sqldatetime


【解决方案1】:

您需要在比较之前将Dates设置为相同的格式,下面分享一个示例,您可以在代码中使用相同的概念。

DateTime dt1;
DateTime dt2;

if (DateTime.TryParse(strDate1, out dt1) && DateTime.TryParse(strDate2, out dt2))
 {
    if (dt1.Date == dt2.Date)
    {
       // the dates are identical
    }
}

【讨论】:

  • 这适用于两个 C# DateTime 对象,但我需要能够将 .Rows.Find(Object) 函数与 C# DateTime 值作为参数一起使用 - 这将比较 C# DateTime 值针对 DataTable 的主键列中的所有 DateTime 值,如果我没记错的话,它们似乎使用了稍微不同的 DateTime 格式。
  • 您只需要以该格式传递您的 C# DateTime,我不确定您的 DataTable PK 格式。
  • 这两种 DateTime 格式的实现似乎有所不同,我不确定它们究竟有何不同。我对他们的差异缺乏了解是真正的问题。
  • 可能考虑这么简单,通过 SQL 表查询以了解格式。如果有帮助?
  • 对了,你为什么要创建 DateTime 作为 PK??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
  • 2012-04-10
  • 1970-01-01
  • 2023-03-10
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多