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

时间:2017-02-08 09:06:21

标签: 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; }

    }

3 个答案:

答案 0 :(得分:3)

减去两个DateTime的结果是select col1 ,col2 ,s34.col1 as col3 ,s34.col2 as col4 from (select col1 ,col2 ,min(struct(col3,col4)) as s34 from tablename group by col1 ,col2 ) t ; 。不幸的是,你不能TimeSpan次。您可以将他们的Sum汇总并使用TotalMilliseconds创建新的TimeSpan

TimeSpan.FromMilliseconds

答案 1 :(得分:2)

这是instanceof的原因。 如果你想总结滴答,那么

Timestamp - Timestamp = Timestamp

或秒

Sum(x => (x.FocusEnd - x.FocusStart).Ticks)

答案 2 :(得分:2)

你可以暂时将它们添加为秒或滴答

TimeSpan.FromSeconds( g.Sum(x => x.FocusEnd.TotalSeconds - x.FocusStart.TotalSeconds))