問題:我有一個包含大量數據的列表,我不知道如何將重複數據合併到一個單元中,它不應該影響其他人。如果可能的話,想everyting在同一個列表中發生的事情,而無需創建多個列表acheive結果在更廣泛的意義上使用LINQ使用LINQ -Concat重複記錄
CaseID ApproverID
1 23
1 45
1 56
2 33
2 90
3 58
3 79
我想是這樣caseID 1 approverID AS 23 ,45,56
問題:我有一個包含大量數據的列表,我不知道如何將重複數據合併到一個單元中,它不應該影響其他人。如果可能的話,想everyting在同一個列表中發生的事情,而無需創建多個列表acheive結果在更廣泛的意義上使用LINQ使用LINQ -Concat重複記錄
CaseID ApproverID
1 23
1 45
1 56
2 33
2 90
3 58
3 79
我想是這樣caseID 1 approverID AS 23 ,45,56
如果你想組的記錄,你可以做到這一點
var result = source.GroupBy(x => x.CaseID, x => x.ApproverID);
:
var groups = myList.GroupBy(element => element.CaseId);
,就像每個元素包含一個列表,您可以遍歷組
第一個lambda表達式選擇組密鑰。第二個lambda表達式選擇值。如果您省略第二個表達式,則會返回源值。您可以使用的結果是這樣的:
foreach (var group in result) {
Console.WriteLine(group.Key);
foreach (int value in group) {
Console.WriteLine(" " + value);
}
}
其結果將是
1 23 45 56 2 33 90 3 58 79
MyData
.GroupBy(d => d.CaseID)
.Select(g => new{
CaseID = g.Key,
ApproverIds = g.Select(x => x.ApproverID).ToList()})
//.Select(x => new{
// x.CaseID,
// approverIdsString = string.Join(", ", x.ApproverIds)})
最後一部分是註釋掉因爲列表的逗號分隔的字符串很少是個好主意。
如果兩個字段都是* same *對象的一部分,那麼這就是答案。 – Tigran
這就是所謂的分組:
foreach (var g in groups) {
Console.WriteLine("Case ID:{0}", g.Key);
foreach (var element in g) {
Console.WriteLine("Approver ID:{0}", element.ApproverId);
}
}
數據在列表中顯示? – Tigran
請顯示您用來獲取當前結果的代碼。 –
是否要用逗號加入多個ApproverID? –