0
我有一個像下面列出的列表,我需要在出現次數中更新時間的發生次數,它不僅僅是獲得列表中字符串的總髮生次數,假設Group1出現第二次出現次數該項目的計數應該更新爲2,如果再次出現該特定事件應該更新爲3.這可以使用循環完成,並根據組的發生增加計數,是否有更好的方法來做到這一點使用linq或其他技術。在通用列表中得到字符串的出現
例如,下面的列表:
public class Category
{
public long Id { get; set; }
public string Name { get; set; }
public int OccuranceCount { get; set; }
}
static void Main(string[] args)
{
var categories = new List<Category>
{
new Category {Id = 1, Name = "Group"},
new Category {Id = 1, Name = "Group2"},
new Category {Id = 1, Name = "Group1"},
new Category {Id = 1, Name = "Group2"},
new Category {Id = 1, Name = "Group"},
new Category {Id = 1, Name = "Group3"},
new Category {Id = 1, Name = "Group"}
};
Console.ReadKey();
}
我需要輸出是這樣的:
Name Occurrence Count
Group 0
Group2 0
Group1 0
Group2 1
Group 1
Group3 0
Group 2
我currrent代碼
foreach (var category in categories)
{
var selectedCategory = categories.Where(x => x.Name.Equals(category.Name));
category.OccuranceCount =
categories.Where(x => x.Name.Equals(category.Name)).Max(x => x.OccuranceCount) + 1;
}
foreach (var category in categories)
{
Console.WriteLine("Name : {0}, OccuranceCount {1}",category.Name, category.OccuranceCount);
}
我是否正確地理解這一點:如果你向列表中插入一個'Category'列表,該列表中的另一個'Category'實例已經擁有了'Name'字符串,那麼你想增加該Category的OccuranceCount?你是否希望將這兩個類別都保留在列表中? – cubrr
「有沒有更好的方法」您能*顯示*您當前的方法嗎?很難得到你的想法。 – HimBromBeere
@HimBromBeere添加了代碼。 – user6634447