2012-11-09 6 views
0

저는 C#을 처음 접했고 CSV 파일에서 특정 값을 읽는 방법을 이해하려고 노력했습니다. 내 파일CSV 읽기 및 특정 값 목록 작성

08/11/2012 01:00:00,28/11/2012 01:00:00,29/11/2012 01:00:00,88, 
08/11/2012 01:00:00,29/11/2012 01:00:00,30/11/2012 01:00:00,88, 
08/11/2012 01:00:00,30/11/2012 01:00:00,01/12/2012 01:00:00,88, 
08/11/2012 01:00:00,01/12/2012 01:00:00,02/12/2012 01:00:00,90.25, 
08/11/2012 01:00:00,02/12/2012 01:00:00,03/12/2012 01:00:00,90.25, 

내가 읽고 문자열 목록에 마지막 값을 저장하려면 다음과 같은 형식 (즉 88 90.25 등)이있다. 이 포럼에 지금까지 발견 된 모든 것을 시도했지만 제 경우에는 효과가 없습니다.

나는이 목록을 내가 실행하는 다른 모델에서 생성 된 XML 파일에서이 값을 가져 오는 다른 문자열 목록과 비교하기 때문에이 작업을 수행하려고합니다. 도와 주셔서 정말로 고맙습니다!

**이 csv 파일에는 위 형식으로 ~ 55000 줄이 포함되어 있습니다. 그 안에

답변

4
var values = File.ReadAllLines("").Select(x => x.Split(new char[] { ',' })[3]); 

작은 편집 - 오타. 이 예를 사용하여 테스트 :

List<string> lines = new List<string>(); 
    lines.Add("08/11/2012 01:00:00,28/11/2012 01:00:00,29/11/2012 01:00:00,88,"); 
    lines.Add("08/11/2012 01:00:00,29/11/2012 01:00:00,30/11/2012 01:00:00,88,"); 
    var values = lines.Select(x => x.Split(new char[] { ',' })[3]); 

목록에서 88, 88을 검색합니다.

0

당신의 가치는 다음과 같이하며, 포함되지 않는 경우는 ","값입니다 :

TextReader tr1 = new StreamReader(CSVFileName, true); 

var Data = tr1.ReadToEnd().Split('\n') 
    .Where(l => l.Length > 0) //nonempty strings 
    .Skip(1)    // skip header if it has one 
    .Select(s => s.Trim()) // delete whitespace 
    .Select(l => l.Split(',')) // get arrays of values 
    .Select(l => new { Date_1 = l[0], 
         Date_2 = l[1], 
         Date_3 = l[2], 
         Val = l[3] }); 

을 다음 당신은 당신이 원하는대로 foreach 또는으로이 객체를 사용할 수 있습니다.

0
double[] numbers = fileText.Split('\n').Select(x => double.Parse(x.Split(',')[3])).ToArray(); 
string numbersJoined = string.Join(" ", numbers);