我有一個這樣的串列:
var list = new List<string>() { "a", "b", "c", "a" };
如您所見,我在此串列中有一個重復項。
所需的輸出應如下所示:
a (2)
b (1)
c (1)
我已經擁有的代碼如下所示:
list.GroupBy(x => x).Select(x => x.Key "(" x.Count() ")").ToList().ForEach(x => list2.Add(x));
但正如你所看到的,我需要第二個串列來獲得所需的輸出。我現在的問題是如何僅使用一個串列來獲得所需的輸出。
uj5u.com熱心網友回復:
我們為什么不直接將專案添加到現有的 list2?
var list2 = new List<string>();
...
list2.AddRange(list
.GroupBy(item => item)
.Select(group => $"{group.Key} ({group.Count()})"));
或從頭開始創建: list2
var list2 = list
.GroupBy(item => item)
.Select(group => $"{group.Key} ({group.Count()})")
.ToList();
uj5u.com熱心網友回復:
這可以滿足您的需要:
var list = new List<string>() { "a", "b", "c", "a" };
foreach (var group in list.GroupBy(b => b).OrderBy(g => g.Key))
{
Console.WriteLine($"{group.Key} ({group.Count()})");
}
因此,如果希望洗掉此串列,可以執行以下操作:
list = list.GroupBy(b => b).Select(g => g.Key).ToList();
結果將是一個重復資料洗掉串列,其中包含"a","b"和"c"。
uj5u.com熱心網友回復:
您可以在一個陳述句中執行此操作(為了便于閱讀,我將其拆分為多行):
var list = new List<string> { "a", "b", "c", "a" };
Console.WriteLine(
string.Join("\n",
list.GroupBy(_=>_).Select(g => $"{g.Key} ({g.Count()})")));
輸出:
a (2)
b (1)
c (1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/445012.html
下一篇:使用集合屬性展平物件
