所以我有以下查询:
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
相加并创建一个新的 TimeSpan
和 TimeSpan.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/