2016-09-18 6 views
2

좋아, 그래서 나는 주차장에 관한 프로젝트를 가지고있다. 긴 이야기 짧게 데이터 목록에서 가장 자주 발생하는 모델을 찾는 방법이 필요합니다. 어떤 좋은 방법이 (사용 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; 

에 접근 할 수 있지만 가장 일반적인 하나를 찾기위한 것이 아니라 단지에 볼 수있는 특정 모델을 제공해야합니다.

답변

4

가장 간단한 방법은 모델별로 그룹화 한 다음 각 그룹의 요소를 계산하는 것입니다. 여기에 내가 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}"); 

점에서 경우에 당신은 하나 개의 특정 모델에 관심이 계산 당신 이 (I이 예에서는 StringComparer을 생략 않지만 난 항상 생산 코드에서 사용하는 것이 좋습니다 참고) 할 수 있습니다

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

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

그러나 당신은 단지 다음 특정 모델의 발생을 계산해야하는 경우이 빠르고 간단 있습니다

관련 문제