c# - 无法将时间类型 System.TimeSpan 隐式转换为 'long'

标签 c# entity-framework linq

所以我有以下查询:

var a = from x in list
        group x by new { x.fname, x.lname } into g
        select new RolesUsersViewModel(g.Key.fname, 
                                       g.Key.lname, 
                                       g.Sum(x => x.FocusEnd - x.FocusStart)
                                      );

我得到了错误,在这部分的这个问题的标题上:x => x.FocusEnd - x.FocusStart

FocusEnd 和 FocusStart 是 DateTime 类型。有人可以帮忙吗?我是 c# 的新手,不确定如何以适当的方式处理这个问题。

这是 ViewModel 的代码。

public class RolesUsersViewModel
    {
        public RolesUsersViewModel(string FirstName, string LastName, TimeSpan totalex)
        {
            fname = FirstName;
            lname = LastName;
            total = totalex;
        }
        public string fname { get; set; }
        public string lname { get; set; }
        public TimeSpan total { get; set; }

    }

最佳答案

两个 DateTime 相减的结果是 TimeSpan。不幸的是,您不能 Sum 时间跨度。您可以将它们的 TotalMilliseconds 相加并创建一个新的 TimeSpanTimeSpan.FromMilliseconds:

....
select new RolesUsersViewModel(
               g.Key.fname, 
               g.Key.lname, 
               TimeSpan.FromMilliSeconds(g.Sum(x => (x.FocusEnd - x.FocusStart).TotalMilliseconds)));

关于c# - 无法将时间类型 System.TimeSpan 隐式转换为 'long',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42108786/

相关文章:

c# - Ajax.ActionLink 从一个 View 发布整个模型?

c# - LINQ 加入不同的结果集

c# - 关于 orderby 和 null 集合的 LINQ to Entities 问题

c# - 如何检查页面是否作为提交表单或其他方式的结果显示

c# - 在 ASP.NET 中处理服务器端数据的 Javascript

c# - 在 Twitch 中使用 IRC-Client 时 WPF-App 无法使用 [C#]

c# - Entity Framework 中的 self 加入

c# - OData 和 WebAPI : Navigation property not present on model

c# - 在 Linq 中查找正则表达式匹配的索引

c# - CompareTo() 有什么作用?我可比