【问题标题】:Unable to cast object of type WhereSelectEnumerableIterator`2[Models.AddonBatch,System.DateTime] to type System.IConvertible无法将 WhereSelectEnumerableIterator`2[Models.AddonBatch,System.DateTime] 类型的对象转换为 System.IConvertible 类型
【发布时间】:2015-02-10 11:26:12
【问题描述】:

我无法让这个 LINQ 查询正常工作。

我在我的 Razor View 中有一个模型,它包含几列,其中一列是一个名为 Trans 的项目列表,在 Trans 内我有几列,例如

model { ID, Name, Email, Trans { ID, PostingDate, Amount}, Date}

我想获取列postingDate的最小和最大日期,我试过这个:

DateTime dateFrom = Convert.ToDateTime(Model.Select(d => d.Trans.Min(b => b.PostingDate)));

DateTime dateTo = Convert.ToDateTime(Model.Select(d => d.addonTrans.Select(t => t.PostingDate)).Max());

但是没有一个成功。

有什么建议吗?

谢谢

【问题讨论】:

    标签: c# linq razor max min


    【解决方案1】:

    你可以使用:

    DateTime dateFrom = models
        .SelectMany(d => d.Trans)
        .Select(tr => Convert.ToDateTime(tr.PostingDate))
        .Min();
    
    DateTime dateTo = models
        .SelectMany(d => d.Trans)
        .Select(tr => Convert.ToDateTime(tr.PostingDate))
        .Max();
    

    如果PostingDate 的类型已经是DateTime,则不需要Convert 调用:

    DateTime dateFrom = models
        .SelectMany(d => d.Trans)
        .Min(tr => tr.PostingDate);
    

    【讨论】:

      猜你喜欢
      • 2015-12-17
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多