2016-10-11 10 views
0

私はクラスを持っています。Tasksです。次ににはの束が含まれています。多くのユーザーがこのリストに多くのtasksを持つことができます。UserIdでグループ化して最速タイムを取得するTimeSpan

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

    public DateTime StartDate { get, set; } 
    public DateTime EndDate { get; set; } 
} 

私はUserIdごとtaskを完了するための最速タイムを取得する必要があります。基本的にUserId = 123に5つのタスクがある場合は、すべてのユーザーに対して最速のものだけを必要とします。このような

答えて

3

あなたはこのような何か行うことができます。

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

はオフトピックかもしれないが、: あなたの命名はかなり良いではありません。あなたのTasksクラスは実際には1つのタスクを表しているので、それは単数であるべきです。そして私はよく知っているクラスの名前は.netであるため、私はクラスの名前としてTaskを使用しません。これは混乱の原因になるかもしれません。

+1

あなたは 'new'キーワードを見逃しました。 –

1

何か:

var result = lst.GroupBy(c => c.UserId, (key, element) => new 
{ 
    key, 
    fast = element.Min(d => d.EndDate - d.StartDate) 
});