c# - 查找列表中最常出现的项目的方法

标签 c# list find

好的,我有一个关于 parking 场的项目。长话短说,我需要一种方法来查找数据列表中最常出现的模型。有什么好的方法可以解决这个问题(使用 VST 2012)

private static int FilterbyModel(string Model, List<Car> cars)


  {
        int modelCount = 0;
        List<string> Modelis = new List<string>();
        foreach (Car s in cars)
        {
            if (s.Modelis == Model)
            {
                if (!Model.Contains(s.Modelis)) 
                {
                    Modelis.Add(s.Modelis);
                    modelCount++;
                }
            }
            return modelCount;

上述方法可行,但我需要提供一个特定的模型来查找,而不仅仅是找到最常见的模型。

最佳答案

计算出现次数的最简单方法是按模型分组,然后计算每个组的元素。这里我用LINQ给出一个例子:

var carsByModel = cars.GroupBy(x => x.Model)
    .Select(x => new { Model = x.Key, Count = c.Count() });

现在,如果您想订购它们并选择最常见的一个:

var mostCommonCar = carsByModel.OrderByDescending(x => x.Count).First();

例如,如果您需要打印两个最常见的模型:

foreach (var model in carsByModel.OrderByDescending(x => x.Count).Take(2))
    Console.WriteLine($"{model.Model}: {model.Count}");

或者不太常见的两个:

foreach (var model in carsByModel.OrderBy(x => x.Count).Take(2))
    Console.WriteLine($"{model.Model}: {model.Count}");

如果您对某个特定模型感兴趣,您可以执行此操作(请注意,我在此示例中省略了 StringComparer,但我始终建议使用它在生产代码中):

carsByModel.First(x => x.Model.Equals("modelYouWant"));

但是请注意,如果您只需要计算特定模型的出现次数,那么这会更快更简单:

int occurencesOfModelIWant = cars.Count(x => x.Model.Equals("modelYouWant"));

关于c# - 查找列表中最常出现的项目的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39556332/

相关文章:

c# - 如何使用 TFS Rest API 获取单元测试结果?

c# - 我可以从 ASP.NET 应用程序外部的 ASP.NET 页面对象呈现 html 吗?

c# - 如何禁用特定的 usb 端口 com2 c# 64 位

c# - 如何在 C# 中的 List<Tuple<string,string>> 中搜索字符串

c# - DBContext Find with Includes - 其中 lambda 带主键

c# - 从表 1 中选择记录并在 C# 中复制到表 2

java - Java中按多个字段排序的最有效方法

python - 如何在Python中从另一个字符串中检测一个字符串的重复元素?

javascript - Array.prototype.find() 意外行为

bash - 如何在 if 语句中使用 grep?