我有以下用於將任務分配給員工的類。Linq group by,然後只能得到其中的一項
public class TaskDetails
{
public int TaskGroupId { get; set; }
public int TaskId { get; set; }
public string AssignedTo { get; set; }
public string TaskName { get; set; }
}
通常我們得到工作組的名單和他們是誰賦予像下面,每個任務下TaskGroupId,每組因爲我們有一個特定的任務id,誰每個任務下分組負責它。
List<TaskDetails> tasks = new List<TaskDetails>
{
new TaskDetails
{
AssignedTo = "JOHN",
TaskGroupId = 100,
TaskId = 1,
TaskName = "FA"
},
new TaskDetails
{
AssignedTo = "TOM",
TaskGroupId = 100,
TaskId = 1,
TaskName = "FA"
},
new TaskDetails
{
AssignedTo = "JOHN",
TaskGroupId = 100,
TaskId = 2,
TaskName = "GH"
},
new TaskDetails
{
AssignedTo = "TOM",
TaskGroupId = 100,
TaskId = 2,
TaskName = "GH"
},
new TaskDetails
{
AssignedTo = "JOHN",
TaskGroupId = 99,
TaskId = 1,
TaskName = "XY"
},
new TaskDetails
{
AssignedTo = "TOM",
TaskGroupId = 99,
TaskId = 1,
TaskName = "XY"
},
new TaskDetails
{
AssignedTo = "JOHN",
TaskGroupId = 99,
TaskId = 2,
TaskName = "YX"
},
new TaskDetails
{
AssignedTo = "TOM",
TaskGroupId = 99,
TaskId = 2,
TaskName = "YX"
}
};
我所試圖做的是組由TaskGroupId和AssignedTo每一項任務,但是,如果一個任務被分配給一個以上的人,我只需要找回他們的一回,在上面的例子中,任務1被分配給John和Tom,但我只需要其中的一個,哪一個(可能是Tom或John)並不重要。我已經嘗試了以下內容,但它正在檢索4個結果以及John和Tom,如截圖所示。我可以從GroupBy語句中刪除x.AssignedTo,它給了我2個結果,但是這些任務隨後在TaskLegs部分中重複,因此也沒有用。
var result = tasks
.GroupBy(x => new {
x.TaskGroupId,
x.AssignedTo })
.Select(group => new {
GroupDetails = group.Key,
TaskLegs = group
.OrderBy(x => x.TaskId)
.ToList() })
.ToList();
反正是有分組結果的方式,所以我只能檢索從分組的結果集的結果之一嗎?基於上面的例子中,我試圖讓2分的結果,一個任務組100和一個任務組99
感謝
如果只有'.First()'擴展方法... – maccettura