C# 在类中查找最常见的属性
我有一个带构造函数的类,并为它设置了一些属性。我需要找到最常见的重复属性并计算它C# 在类中查找最常见的属性,c#,class,properties,C#,Class,Properties,我有一个带构造函数的类,并为它设置了一些属性。我需要找到最常见的重复属性并计算它 class Car { public string Make { get; set; } public Car(string make) { this.Make = make; } } 我创建了一个名为“拥有7名成员的汽车”的列表,并设置了这些汽车品牌:奥迪、沃尔沃、沃尔沃、宝马、奥迪、奥迪,奥迪最常见的是奥迪 如何查找和输出最常见的品牌和数量?您可以使用以下方法
class Car
{
public string Make { get; set; }
public Car(string make)
{
this.Make = make;
}
}
我创建了一个名为“拥有7名成员的汽车”的列表,并设置了这些汽车品牌:奥迪、沃尔沃、沃尔沃、宝马、奥迪、奥迪,奥迪最常见的是奥迪
如何查找和输出最常见的品牌和数量?您可以使用以下方法:
using System.Linq;
using System.Collections.Generic;
void TestCar()
{
var list = new List<Car>();
list.Add(new Car("Audi"));
list.Add(new Car("Volvo"));
list.Add(new Car("Audi"));
list.Add(new Car("BMW"));
list.Add(new Car("Audi"));
var query = ( from car in list
group car by car.Make into cars
select new { Key = cars.Key, Count = cars.Count() } );
var result = query.OrderByDescending(item => item.Count).FirstOrDefault();
if (result != null)
MessageBox.Show(result.Key + " count = " + result.Count);
}
我需要找到最常见的品牌,在大多数情况下,它不会是奥迪,我把它作为一个例子。事实上,答案已经更新。它可以工作,但我不明白它是如何工作的。linq语句在计算每一次事件时,按此属性分组计算每个品牌。接下来,我们在count列上降序。结果是奥迪3、沃尔沃1、宝马1。所以我们取第一排,其中Key=Audi,Count=3。命令可以放在linq语句中。你应该考虑可能有几个相同的计数。您可以获取结果的第一个或默认值,并将计数值作为countMax。接下来,您可以在相同的结果上使用TakeWhilekey=>key==countMax并进行foreach以显示大多数make汽车。按make对列表进行分组,然后选择Group with most items see marked duplicates。您的场景完全相同,只是您要查找的是Make值而不是int值。