Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在类中查找最常见的属性_C#_Class_Properties - Fatal编程技术网

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值。