C# 在c中的列表中查找多个重复值#

C# 在c中的列表中查找多个重复值#,c#,list,C#,List,那么,假设我有一个汽车清单。列表中的每个项目都有一个品牌和一个颜色属性。我想找出每个品牌有多少相同颜色的,然后打印这些信息。该列表将由用户输入填写。对于我来说,没有办法知道哪些确切的值会出现在列表中 例如: class Car { public string brand; public string color; } private void DoSomething() { List<Car> cars

那么,假设我有一个汽车清单。列表中的每个项目都有一个品牌和一个颜色属性。我想找出每个品牌有多少相同颜色的,然后打印这些信息。该列表将由用户输入填写。对于我来说,没有办法知道哪些确切的值会出现在列表中

例如:

class Car
    {
        public string brand;
        public string color;
    }

    private void DoSomething()
    {
        List<Car> cars = new List<Car>();
        cars.Add(new Car { brand = "Toyota", color = "blue" });
        cars.Add(new Car { brand = "Toyota", color = "red" });
        cars.Add(new Car { brand = "Toyota", color = "blue" });
        cars.Add(new Car { brand = "Audi", color = "red" });
        cars.Add(new Car { brand = "Audi", color = "red" });
        cars.Add(new Car { brand = "Audi", color = "blue" });

        // Find out for each brand how many there are of the same color, and then print that info
        // Example output: Toyota: 2 blue, 1 red
        //                 Audi:   2 red, 1 blue
    }
等级车
{
公共字符串品牌;
公共字符串颜色;
}
私人无效剂量()
{
列出车辆=新列表();
添加(新车{brand=“Toyota”,color=“blue”});
添加(新车{brand=“Toyota”,color=“red”});
添加(新车{brand=“Toyota”,color=“blue”});
添加(新车{brand=“Audi”,color=“red”});
添加(新车{brand=“Audi”,color=“red”});
添加(新车{brand=“Audi”,color=“blue”});
//找出每个品牌有多少相同颜色的,然后打印这些信息
//示例输出:丰田:2个蓝色,1个红色
//奥迪:2辆红色,1辆蓝色
}
我花了很长时间寻找一种方法来做到这一点。我所能想到的只是如何获得列表中某个项目的出现次数


如果我的问题不清楚,请让我知道,我将尝试解释更多。

一些linq应该这样做:

var result = cars.GroupBy(x => new { x.brand, x.color })
    .Select(x => new { 
        Brand = x.Key.brand, 
        Color = x.Key.color, 
        Count = x.Count() 
    });

有些linq应该这样做:

var result = cars.GroupBy(x => new { x.brand, x.color })
    .Select(x => new { 
        Brand = x.Key.brand, 
        Color = x.Key.color, 
        Count = x.Count() 
    });

你可以用LINQ来做这件事。如果你不熟悉LINQ,那就需要做一些研究,也许一开始会让你头疼。但是你最终会得到相当简单的代码。展示你所尝试的,特别是那些代码。你可以使用LINQ来完成这项工作。如果你不熟悉LINQ,那就需要做一些研究,也许一开始会让你头疼。但你最终会得到相当简单的代码。展示你所尝试的,特别是那些代码。谢谢,这对我很有用。在这之后,我所要做的就是用循环迭代结果。我一定要学习更多关于LINQ的知识!谢谢你,这对我有用。在这之后,我所要做的就是用循环迭代结果。我一定要学习更多关于LINQ的知识!谢谢你的回答!这对我来说是可行的,但是在我的情况下,被接受的答案会给我更好的结果。不客气。没问题,你应该接受最适合这个问题的答案。如果这是他的回答,那么他应该得到这个名声。谢谢你的回答!这对我来说是可行的,但是在我的情况下,被接受的答案会给我更好的结果。不客气。没问题,你应该接受最适合这个问题的答案。如果这是他的回答,那么他应该得到这个名声。
  var grp = cars.GroupBy(g => new { g.brand, g.color }).Select(n => new {
                brand = n.Key.brand,
                color = n.Key.color,
                count = n.Count()

            });