我需要根據月份對其進行分組并獲得最大和最小計數。聽說,Sep Month 有 Max count 而 Jun Month 有 Min count。所以我需要最大值為5,最小值為1。
提前致謝。
public class Test
{
public string Month { get; set; }
public string ID { get; set; }
public string SubMonth { get; set; }
}
List<Test> test = new List<Test>();
test.Add(new Test { Month = "Sep", ID ="1", SubMonth = "Sep2" });
test.Add(new Test { Month = "Sep", ID = "1", SubMonth = "Sep3" });
test.Add(new Test { Month = "Sep", ID = "1", SubMonth = "Sep4" });
test.Add(new Test { Month = "Sep", ID = "1", SubMonth = "Sep5" });
test.Add(new Test { Month = "Sep", ID = "1", SubMonth = "Sep6" });
test.Add(new Test { Month = "Jun", ID = "3", SubMonth = "Jun2" });
test.Add(new Test { Month = "Jul", ID = "4", SubMonth = "Jul2" });
test.Add(new Test { Month = "Jul", ID = "4", SubMonth = "Jul3" });
test.Add(new Test { Month = "Jan", ID = "5", SubMonth = "Jan2" });
test.Add(new Test { Month = "Jan", ID = "5", SubMonth = "Jan3" });
test.Add(new Test { Month = "Jan", ID = "5", SubMonth = "Jan4" });
test.Add(new Test { Month = "Jan", ID = "5", SubMonth = "Jan5" });
uj5u.com熱心網友回復:
你可以這樣做。您將獲得最大和最小計數:
var result = (test.GroupBy(item => item.Month)
.Select(itemGroup => new { Item = itemGroup.Key, Count = itemGroup.Count() })
.OrderByDescending(Item => Item.Count).ThenBy(Item => Item.Item)
).ToList();
Console.WriteLine("{0} {1}\r\n{2} {3}", result.First().Item, result.First().Count, result.Last().Item, result.Last().Count);
uj5u.com熱心網友回復:
使用linq
你可以這樣做。
var sepCount = test.Where(x => x.Month == "Sep").Count();
var junCount = test.Where(x => x.Month == "Jun").Count();
// you can get the count of each month in the list
var monthCount = test.GroupBy(x => x.Month).ToList().Select(x => x.Count()).ToList();
uj5u.com熱心網友回復:
如果您只想要最小和最大計數,您可以使用Aggregate
元組來收集它們:
var minmax = test.GroupBy(t => t.Month)
.Select(tg => new { Month = tg.Key, Count = tg.Count() })
.Aggregate((Min: int.MaxValue, Max: int.MinValue), (mm, mc) => ((mc.Count < mm.Min ? mc.Count : mm.Min), (mc.Count > mm.Max ? mc.Count : mm.Max)));
如果您還想知道最小和最大月份,您還需要將其保存在元組中:
var minmaxMonth = test.GroupBy(t => t.Month)
.Select(tg => new { Month = tg.Key, Count = tg.Count() })
.Aggregate((Min: new { Month = "Min", Count = int.MaxValue }, Max: new { Month = "Max", Count = int.MinValue }),
(mm, mc) => ((mc.Count < mm.Min.Count ? mc : mm.Min), (mc.Count > mm.Max.Count ? mc : mm.Max)));
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/508226.html
標籤:C# 网 asp.net-mvc 林克
上一篇:為什么授權身份無法正常作業?