2016-07-17 1 views
-1

저는 C#의 초보자로서 도움이 필요합니다 !!! . 다음 열에 학생 세부 정보가 포함 된 .csv 파일이 있습니다. 여기에 필요한 것은 개인이 채점 한 최고 점수를 기반으로하므로 출력을 다음과 같이 가져와야합니다. (/ * CSV 파일에있는 데이터는 다음과 같습니다. 각 행과 열의 셀에서 * 100 /)이 될csv 파일을 읽고 행 값과 열 값을 표시하는 방법

이름, 수학, 과학, 영어 CSV의 (헤더)

하기 Akash, 80, 67, 54

마노, 64, 56, 72

수바스, 78, 84, 63

읽기 작업을 수행 할 수 있으며 전체 줄을 표시했습니다. 하지만 제 문제는 각 과목에서 가장 높은 점수를받은 학생 이름과 주제를 표시하고 싶습니다.

샘플 출력 :

영어 마노

수학 - Subas

과학 - 아카 쉬

내가 중간에 붙어과 VB를 사용하지 않고 어떠한 답변 매우 감사합니다.

답변

0

요구 사항 설명이 샘플 출력과 어떻게 일치하는지 알 수 없습니다. 다음은 각 과목과 최고 성적을받은 학생을위한 코드입니다. 집계 LINQ에 대한이 질문에 답변을

List<string[]> data = new List<string[]>(); 

using (StringReader sr = new StringReader(csvText)) 
{ 
    while (sr.Peek() > 0) 
    { 
     data.Add(sr.ReadLine().Split(',')); 
    } 
} 

//Iterates through columns, skipping first one (names) 
List<string> output = new List<string>(); 
for (int i = 1; i < data[0].Count(); i++) 
{ 
    string subjectName = data[0][i]; 
    Dictionary<string,int> grades = new Dictionary<string, int>(); 
    //Iterates through rows, skipping first one (headers) 
    for (int j = 1; j < data.Count; j++) 
    { 
     grades.Add(data[j][0],Convert.ToInt32(data[i][j])); 
    } 
    output.Add(subjectName + " - " + grades.Aggregate((l, r) => l.Value > r.Value ? l : r).Key); 
} 

제공 : Get key of highest value in Dictionary

+0

덕분에 많은 토르! ... 내가 먼저 내가 생각을했다 ....이 가능하다 생각 해요 List 에서 이름 열을 혼자 가져 와서 목록의 마크 열을 생각한 수치 ... 마지막으로 가장 높은 점수와 이름을 얻는 논리 부분을 넣어 ... 어쨌든 도움에 대한 감사 : D – cjgeez

+1

다른 모든 사람들이 자신의 공상을 간절히 구할 수 있도록 여기에 솔루션을 포함 시키십시오. – Thor

관련 문제