Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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# 按用户ID分组列表并获得最快的时间跨度_C#_Linq_Group By_Timespan - Fatal编程技术网

C# 按用户ID分组列表并获得最快的时间跨度

C# 按用户ID分组列表并获得最快的时间跨度,c#,linq,group-by,timespan,C#,Linq,Group By,Timespan,我有一个类,我们称之为Tasks。然后是一个列表,其中包含一系列任务。许多用户可以在此列表中包含许多任务 public class Tasks { public string UserId { get, set } public DateTime StartDate { get, set; } public DateTime EndDate { get; set; } } 我需要以最快的时间按照UserId完成任务。基本上,如果UserId=123有5个任务,我只想要

我有一个类,我们称之为
Tasks
。然后是一个
列表
,其中包含一系列
任务
。许多用户可以在此列表中包含许多
任务

public class Tasks
{
    public string UserId { get, set }

    public DateTime StartDate { get, set; }
    public DateTime EndDate { get; set; }
}
我需要以最快的时间按照
UserId
完成
任务。基本上,如果
UserId=123
有5个任务,我只想要最快的一个任务,依此类推。

类似这样的内容:

var result = lst.GroupBy(c => c.UserId, (key, element) => new
{
    key,
    fast = element.Min(d => d.EndDate - d.StartDate)
});
    var list = yourPopulatedListOfTasks;
    var result = list.GroupBy(x=>x.UserId).Select(x=> new{
        UserId = x.Key,
        MaxTimeSpan = x.Min(y=>y.EndDate-y.StartDate)
    });
大概是这样的:

var result = lst.GroupBy(c => c.UserId, (key, element) => new
{
    key,
    fast = element.Min(d => d.EndDate - d.StartDate)
});
    var list = yourPopulatedListOfTasks;
    var result = list.GroupBy(x=>x.UserId).Select(x=> new{
        UserId = x.Key,
        MaxTimeSpan = x.Min(y=>y.EndDate-y.StartDate)
    });

您可以这样做:

var result = lst.GroupBy(c => c.UserId, (key, element) => new
{
    key,
    fast = element.Min(d => d.EndDate - d.StartDate)
});
    var list = yourPopulatedListOfTasks;
    var result = list.GroupBy(x=>x.UserId).Select(x=> new{
        UserId = x.Key,
        MaxTimeSpan = x.Min(y=>y.EndDate-y.StartDate)
    });
可能与主题无关,但:
你的名字不太好。它应该是单数形式,因为您的
任务
类实际上代表单个任务。我不会使用
任务
作为我的类的名称,因为它是.net中一个众所周知的类的名称,这可能会引起混淆。

您可以这样做:

var result = lst.GroupBy(c => c.UserId, (key, element) => new
{
    key,
    fast = element.Min(d => d.EndDate - d.StartDate)
});
    var list = yourPopulatedListOfTasks;
    var result = list.GroupBy(x=>x.UserId).Select(x=> new{
        UserId = x.Key,
        MaxTimeSpan = x.Min(y=>y.EndDate-y.StartDate)
    });
可能与主题无关,但:
你的名字不太好。它应该是单数形式,因为您的
任务
类实际上代表单个任务。我不会用
Task
作为我的类的名称,因为它是.net中一个众所周知的类的名称,这可能会引起混淆。

您错过了
new
关键字。您错过了
new
关键字。