Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据linq中的事件类型执行groupby_C#_.net_Linq_C# 4.0 - Fatal编程技术网

C# 根据linq中的事件类型执行groupby

C# 根据linq中的事件类型执行groupby,c#,.net,linq,c#-4.0,C#,.net,Linq,C# 4.0,我有一个应用程序,将跟踪与屏幕截图的所有用户活动。所以我在报告时面临一个问题,我想知道用户在特定字段的按键事件上花费了多少时间。 下面是示例数据 public class UserActivityData { [DisplayName("Process Name")] public string ProcessName { get; set; } [DisplayName("Window Title")] public s

我有一个应用程序,将跟踪与屏幕截图的所有用户活动。所以我在报告时面临一个问题,我想知道用户在特定字段的按键事件上花费了多少时间。 下面是示例数据

 public class UserActivityData
    {
        [DisplayName("Process Name")]
        public string ProcessName { get; set; }
        [DisplayName("Window Title")]
        public string WindowTitle { get; set; }
        [DisplayName("Event Type")]
        public EventType EventType { get; set; }
        [DisplayName("Event Time")]
        public string EventTime { get; set; }
        [DisplayName("Total Time Spent In Secs")]
        public string TotalTimeSpent { get; set; }
        public int X { get; set; }
        public int Y { get; set; }
        [DisplayName("Capture Data")]
        public string CaptureData { get; set; }
        public string ApplicationPath { get; set; }
        [DisplayName("Element Name")]
        public string ElementName { get; set; }
        [DisplayName("Automation ID")]
        public string AutomationID { get; set; }
        [DisplayName("Control Type")]
        public string ControlType { get; set; }
        public long LongEventTime { get; set; }
    }


 public enum EventType
  {
    RightClick,
    LeftClick,
    MiddleButton,
    MouseMove,
    DoubleClick,
    KeyPress,
    Copy,
    Paste,
    Focus,
    Open,
    Close,
    FiddlerRequest
 }
这是保存数据集的类

[{"ProcessName":"explorer","WindowTitle":"explorer","EventType":1,"EventTime":"28-Jul-2017 06:39:24","X":255,"Y":354,"CaptureData":"","ApplicationPath":"C:\\Windows\\Explorer.EXE","ElementName":"","AutomationID":"","ControlType":"list item","LongEventTime":636368639643087155},
{"ProcessName":"explorer","WindowTitle":"explorer","EventType":1,"EventTime":"28-Jul-2017 06:39:25","X":253,"Y":268,"CaptureData":"","ApplicationPath":"C:\\Windows\\Explorer.EXE","ElementName":"","AutomationID":"","ControlType":"list item","LongEventTime":636368639650818276},
{"ProcessName":"explorer","WindowTitle":"explorer","EventType":1,"EventTime":"28-Jul-2017 06:39:25","X":266,"Y":176,"CaptureData":"","ApplicationPath":"C:\\Windows\\Explorer.EXE","ElementName":"","AutomationID":"","ControlType":"list item","LongEventTime":636368639659717952},
{"ProcessName":"explorer","WindowTitle":"explorer","EventType":1,"EventTime":"28-Jul-2017 06:39:27","X":212,"Y":342,"CaptureData":"","ApplicationPath":"C:\\Windows\\Explorer.EXE","ElementName":"","AutomationID":"","ControlType":"list item","LongEventTime":636368639670828333},
{"ProcessName":"explorer","WindowTitle":"explorer","EventType":1,"EventTime":"28-Jul-2017 06:39:28","X":129,"Y":542,"CaptureData":"","ApplicationPath":"C:\\Windows\\Explorer.EXE","ElementName":"","AutomationID":"","ControlType":"list item","LongEventTime":636368639680374536},
{"ProcessName":"WinSCP","WindowTitle":"WinSCP","EventType":1,"EventTime":"28-Jul-2017 06:39:30","X":589,"Y":301,"CaptureData":"","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"","AutomationID":"1051654","ControlType":"edit","LongEventTime":636368639705742531},
{"ProcessName":"WinSCP","WindowTitle":"Login","EventType":5,"EventTime":"28-Jul-2017 06:39:31","X":589,"Y":301,"CaptureData":"r","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"","AutomationID":"1051654","ControlType":"edit","LongEventTime":636368639714952510},
{"ProcessName":"WinSCP","WindowTitle":"Login","EventType":5,"EventTime":"28-Jul-2017 06:39:31","X":589,"Y":301,"CaptureData":"a","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"r","AutomationID":"1051654","ControlType":"edit","LongEventTime":636368639716392533},
{"ProcessName":"WinSCP","WindowTitle":"Login","EventType":5,"EventTime":"28-Jul-2017 06:39:31","X":589,"Y":301,"CaptureData":"v","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"ra","AutomationID":"1051654","ControlType":"edit","LongEventTime":636368639718522707},
{"ProcessName":"WinSCP","WindowTitle":"Login","EventType":5,"EventTime":"28-Jul-2017 06:39:32","X":589,"Y":301,"CaptureData":"i","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"rav","AutomationID":"1051654","ControlType":"edit","LongEventTime":636368639720202589},
{"ProcessName":"WinSCP","WindowTitle":"Login","EventType":5,"EventTime":"28-Jul-2017 06:39:32","X":589,"Y":301,"CaptureData":"k","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"ravi","AutomationID":"1051654","ControlType":"edit","LongEventTime":636368639722662623},
{"ProcessName":"WinSCP","WindowTitle":"Login","EventType":5,"EventTime":"28-Jul-2017 06:39:32","X":589,"Y":301,"CaptureData":"a","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"ravik","AutomationID":"1051654","ControlType":"edit","LongEventTime":636368639724112642},
{"ProcessName":"WinSCP","WindowTitle":"Login","EventType":5,"EventTime":"28-Jul-2017 06:39:32","X":589,"Y":301,"CaptureData":"n","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"ravika","AutomationID":"1051654","ControlType":"edit","LongEventTime":636368639725722813},
{"ProcessName":"WinSCP","WindowTitle":"Login","EventType":5,"EventTime":"28-Jul-2017 06:39:32","X":589,"Y":301,"CaptureData":"t","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"ravikan","AutomationID":"1051654","ControlType":"edit","LongEventTime":636368639727382686},
{"ProcessName":"WinSCP","WindowTitle":"Login","EventType":5,"EventTime":"28-Jul-2017 06:39:32","X":589,"Y":301,"CaptureData":"h","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"ravikant","AutomationID":"1051654","ControlType":"edit","LongEventTime":636368639728952705},
{"ProcessName":"WinSCP","WindowTitle":"Login","EventType":5,"EventTime":"28-Jul-2017 06:39:34","X":589,"Y":301,"CaptureData":"\u0001","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"ravikanth","AutomationID":"1051654","ControlType":"edit","LongEventTime":636368639741393315},
{"ProcessName":"WinSCP","WindowTitle":"Login","EventType":6,"EventTime":"28-Jul-2017 06:39:35","X":589,"Y":301,"CaptureData":"ravikanth","ApplicationPath":"","ElementName":"ravikanth","AutomationID":"1051654","ControlType":"edit","LongEventTime":636368639751728266},
{"ProcessName":"WinSCP","WindowTitle":"WinSCP","EventType":1,"EventTime":"28-Jul-2017 06:39:37","X":669,"Y":346,"CaptureData":"","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"","AutomationID":"7930456","ControlType":"edit","LongEventTime":636368639771735142},
{"ProcessName":"WinSCP","WindowTitle":"Login","EventType":7,"EventTime":"28-Jul-2017 06:39:38","X":666,"Y":349,"CaptureData":"ravikanth","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"","AutomationID":"7930456","ControlType":"edit","LongEventTime":636368639780934311},
{"ProcessName":"WinSCP","WindowTitle":"WinSCP","EventType":1,"EventTime":"28-Jul-2017 06:39:39","X":762,"Y":356,"CaptureData":"","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"","AutomationID":"20186264","ControlType":"edit","LongEventTime":636368639792061233},
{"ProcessName":"WinSCP","WindowTitle":"Login","EventType":7,"EventTime":"28-Jul-2017 06:39:40","X":762,"Y":356,"CaptureData":"ravikanth","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"","AutomationID":"20186264","ControlType":"edit","LongEventTime":636368639805472017},
{"ProcessName":"WinSCP","WindowTitle":"WinSCP","EventType":1,"EventTime":"28-Jul-2017 06:39:47","X":673,"Y":239,"CaptureData":"","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"Session","AutomationID":"4262798","ControlType":"pane","LongEventTime":636368639876601809},
{"ProcessName":"WinSCP","WindowTitle":"WinSCP","EventType":1,"EventTime":"28-Jul-2017 06:39:48","X":671,"Y":255,"CaptureData":"","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"Drop Down Button","AutomationID":"DropDown","ControlType":"button","LongEventTime":636368639880488395},
{"ProcessName":"WinSCP","WindowTitle":"WinSCP","EventType":1,"EventTime":"28-Jul-2017 06:39:49","X":643,"Y":303,"CaptureData":"","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"WebDAV","AutomationID":"","ControlType":"list item","LongEventTime":636368639891350690},
{"ProcessName":"WinSCP","WindowTitle":"WinSCP","EventType":1,"EventTime":"28-Jul-2017 06:39:50","X":806,"Y":259,"CaptureData":"","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"No encryption","AutomationID":"5374814","ControlType":"combo box","LongEventTime":636368639903461809},
{"ProcessName":"WinSCP","WindowTitle":"WinSCP","EventType":1,"EventTime":"28-Jul-2017 06:39:51","X":791,"Y":277,"CaptureData":"","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"TLS/SSL Implicit encryption","AutomationID":"","ControlType":"list item","LongEventTime":636368639912755112},
{"ProcessName":"WinSCP","WindowTitle":"WinSCP","EventType":1,"EventTime":"28-Jul-2017 06:39:52","X":757,"Y":558,"CaptureData":"","ApplicationPath":"C:\\Program Files (x86)\\WinSCP\\WinSCP.exe","ElementName":"Close","AutomationID":"1509814","ControlType":"button","LongEventTime":636368639929011583}]
我需要一个帮助来编写一个linq查询,以便根据EventType Keypress事件执行groupby,并获取花费的总时间


我对你的课程做了两个小改动:

  • 我将EventType更改为string,因为我不想实现您的枚举
  • 我已将“EventTime”更改为类型
    DateTime
    。这样,我就不必尝试将字符串解析为查询中的日期
  • 对此,我使用了该查询:

    var data = new JavaScriptSerializer().Deserialize<List<UserActivityData>>(File.ReadAllText(@"C:\users\foo\desktop\demo.json")); //saved your data locally
    data.Where(x => x.EventType == "5") // 5 is KeyPress
        .GroupBy(d => d.ProcessName) //Grouping by ProcessName
        .Select (d => new {
            ProcessName = d.FirstOrDefault().ProcessName,
            //get Max; substract min; get rough duration in seconds
            Duration = d.Max (x => x.EventTime) - d.Min (x => x.EventTime), 
            //sum up all ticks to get duration in ticks
            DurationTicks = d.Sum (x => x.LongEventTime)
        })
        //LinqPad native; do not use in Visual Studio or VS Code
        .Dump();
    
    var data=new JavaScriptSerializer()。反序列化(File.ReadAllText(@“C:\users\foo\desktop\demo.json”)//在本地保存数据
    其中(x=>x.EventType==“5”)//5是按键
    .GroupBy(d=>d.ProcessName)//按ProcessName分组
    .选择(d=>new{
    ProcessName=d.FirstOrDefault().ProcessName,
    //获取最大值;减去最小值;以秒为单位获取大致的持续时间
    持续时间=d.Max(x=>x.EventTime)-d.Min(x=>x.EventTime),
    //将所有刻度相加,以获得以刻度为单位的持续时间
    DurationTicks=d.Sum(x=>x.LongEventTime)
    })
    //林帕德本地人;不要在Visual Studio或VS代码中使用
    .Dump();
    
    输出:

    Hey@ravi你能提供保存数据集的类吗?是
    LongEventTime
    以毫秒为单位的时间还是滴答声?LongEventTime是滴答声..在哪个命名空间上可以找到
    EventType
    类?EventType是我的内部枚举,可能是左键单击、右键单击、按键、复制粘贴等。不,除非你告诉我,什么不起作用。我看不见你的脑袋或电脑屏幕。