继承:在 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);
有没有办法找到最少的"数字"和最常用的汽车"名称"?
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;