作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,我有一个关于 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/
我是一名优秀的程序员,十分优秀!