继承:在 c# 中的继承类对象列表中查找最大数量和最常用的字符串

本文关键字:继承 字符串 常用 最大数 对象 列表 查找 | 更新日期: 2023-09-27 18:35:06

我有这个继承自Vehicle的类Car

public class Car: Vehicle
{
    public int num;
    string name;
    public string color = "Purple";
    public Car(int num, string name)
    { 
        ...
    }
}

在主类中,我有一个Vehicle列表:

List<Vehicle> cList = new List<Vehicle>();

我像这样添加不同的汽车:

Car q = new Car(124,"BMW");
cList.Add(q);

有没有办法找到最少的"数字"和最常用的汽车"名称"?

继承:在 c# 中的继承类对象列表中查找最大数量和最常用的字符串

LINQ 似乎是查找最小值的不错选择:

cList.Min(t=>t.num)

可能还会走 LINQ 路线来获取最受欢迎的汽车名称,但它会稍微复杂一些:

var query = cList.GroupBy(t => t.name).OrderByDescending(t => t.Count()).First();

我目前无法测试,但这应该会让你指出正确的方向。

给定一个类Vehicle及其子类型Car

class Vehicle
{
  ...
}
class Car : Vehicle
{
    public int    Number { get; set; }
    public string Name {  get;  set; }
}

并给出一个包含车辆列表的IEnumerable<Vehicle>

IEnumerable<Vehicle> vehicles = GetMeSomeVehicles() ;

您应该能够获得如下所示Car.Number的最小值:

int minNumber = vehicles
                .Where( v => v is Car )
                .Cast<Car>()
                .Min( c => c.Number )
                ;

您应该能够按照以下几行获得最常见的名称:

string MostCommonName = vehicles
                        .OfType<Car>()
                        .GroupBy( c => c.Name , StringComparer.OrdinalIgnoreCase )
                        .OrderByDescending( g => g.Count() )
                        .ThenBy( g => g.Key )
                        .First()
                        .Select( g => g.Key )
                        ;
List<Car> carList = new List<Car>();
//Your cars...
int maxNum = carList.Max(c => c.num);
string maxOccurence = carList.Select(c => c.name).GroupBy(x => x).OrderByDescending(x => x.Count()).First().Key;