【问题标题】:How to Parse a nullable DateTime during a LINQ group operation?如何在 LINQ 组操作期间解析可为空的 DateTime?
【发布时间】:2015-07-03 08:22:17
【问题描述】:

由于可空日期时间 (DateTime?) 的年份,我需要对一些行进行分组。这是我的代码:

group x by DateTime.Parse(x.MyDate).Year into g

但由于它可以为空,我不能这样做。

TryParse 需要 out 到一个变量,我认为在这里是徒劳的,因为它需要在 LINQ 匹配中进行处理。

您将如何实现这一目标?外用功能?还是有更快/更智能的方法?

【问题讨论】:

  • 我希望您不要尝试使用该 LINQ 表达式对 SQL 数据库进行查询,因为它不起作用...

标签: c# .net linq datetime group-by


【解决方案1】:

根据您使用 Linq 的目标,也许您可​​以使用:

group x 
by string.IsNullOrEmpty(x.MyDate) ? (int?)null : DateTime.Parse(x.MyDate).Year
into g

【讨论】:

    【解决方案2】:

    你在这里:

    List<DateTime?> dateTimes = new List<DateTime?>
        {DateTime.Now, null, DateTime.Now.AddDays(10)};
    var query = from x in dateTimes group x by x into g where g.Key.HasValue select g.Key;
    

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      如果它是明确的 DateTime,你可以避免 TryParse 吗?场地。然后您的结果代码将如下所示

      var testx = from x in lst
                  group x by x.MyDate.HasValue?x.MyDate.Value.Year:0 into g
                  select g;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多