2013-07-30 1 views
1

C#에서 CSV 파일을 읽고 목록에 데이터를 놓은 다음 데이터를 SQL 데이터베이스 데이터베이스로 덤프해야합니다.C#의 목록을 사용하여 설정하십시오. 도움이 필요합니다.

내가 관심있어하는 클래스는 CsvHelper를 사용하고 있습니다.

:

1,2013-05-14,NISSAN,059 7013,1995,VAN,Deisel,NISSAN,0000,NISSAN,Red,MARADANA,op1,description,p1.jpg+p2.jpg+p3.jpg,r1+r2+r3 

2,2013-05-14,NISSAN2,059-7013,1995,VAN,Deisel,NISSAN,0000,NISSAN,Red,MARADANA,op1,description,p1.jpg+p2.jpg+p3.jpg,r1+r2+r3 

이것은

class Vehicle 
    { 
     public int ID { get; set; } 
     public string ClosingDate { get; set; } 
     public string Model { get; set; } 
     public string Reg { get; set; } 
     public string YearOfManufacture { get; set; } 
     public string VehicleType { get; set; } 
     public string Fuel { get; set; } 
     public string Brand { get; set; } 
     public string Mileage { get; set; } 
     public string Make { get; set; } 
     public string Colour { get; set; } 
     public string VehicleYard { get; set; } 
     public string BasicOptions { get; set; } 
     public string Description { get; set; } 
     public List<string> Photos { get; set; } 
     public List<string> Regions { get; set; } 
    } 

내가 시도 파일이 코드를 사용하여 CSV 파일을 읽고 CSV의 클래스입니다 :

이는 CSV 파일에 두 개의 샘플 데이터입니다

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      CsvHelperRead(); 

      Console.Read(); 
     } 

     private static void CsvHelperRead() 
     { 

      CsvConfiguration config = new CsvConfiguration(); 
      config.HasHeaderRecord = false; 

      using (var reader = new CsvReader(new StreamReader(@"C:\Users\afshandc\Desktop\0729\vTest.csv"), config)) 
      { 
       while (reader.Read()) 
       { 
        Console.WriteLine(reader.GetField(1)); 
       } 
      } 
     } 
    } 
} 

CSV 파일을 읽고이 목록에 놓아야합니다. 에서

class CSV 
    { 
     public List<Vehicle> ReadVechileCSV() 
     { 







     } 
    } 
+1

당신의 포스트없는 부분을 당신이 코드를 작성 한 문제를 설명 곳 . 지금까지 모호한 요구 사항이 있습니다 ... –

+0

CSV에'' "data1" "," "data2" "'를 사용하라는 조언이 있습니다. 귀하의 설명에 쉼표가 포함되어있을 것입니다. 기록. 그렇다면 당신은 @No Idea For Name에 의해 제안 된 다른 솔루션을 신뢰할 수 있습니다. – glautrou

+0

_Off-topic : _ Vehicle은 C#에서 각각의 데이터 유형이 존재하는 반면 문자열은 너무 많습니다. 기본적으로, 이런 종류의 응용 프로그램을 만드는 동안 응용 프로그램의 최상위 수준에서이 추한 파싱을 숨기는 도우미 유틸리티를 사용하는 것이 좋습니다. – Leri

답변

1

당신의 CsvHelperRead 당신은 할 수 있습니다 :

using (var reader = new CsvReader(new StreamReader(@"C:\Users\afshandc\Desktop\0729\vTest.csv"), config)) 
    { 
     while (reader.Read()) 
     { 
      string line = reader.GetField(1); 
      string[] classParams = line.Split(','); 
      Vehicle v = new Vehicle() 
      { 
      ID = int.Parse(classParams[0]), 
      ClosingDate = classParams[1], 
      Model = classParams[2], 
      Reg = classParams[3], 
      YearOfManufacture = classParams[4], 
      VehicleType = classParams[5], 
      Fuel = classParams[6], 
      Brand = classParams[7], 
      Mileage = classParams[8], 
      Make = classParams[9], 
      Colour = classParams[10], 
      VehicleYard = classParams[11], 
      BasicOptions = classParams[12], 
      Description = classParams[13], 
      Photos = GetJoinedByPlus(classParams[14]), 
      Regions = GetJoinedByPlus(classParams[15]) 
      }; 
     } 
    } 

    private List<string> GetJoinedByPlus(string p) 
    { 
    List<string> rtVal = new List<string>(); 
    rtVal.AddRange(p.Split('+')); 
    return rtVal; 
    } 

당신이 그것을 PARAMS 것받을 차량에 대한 생성자가 가정 ..

+2

개체 초기화를 사용할 수도 있습니다 (생성자를 작성하지 않아도 됨). – Tim

+0

이것은 읽은 각 행에 대해 단일 Vehicle을 생성하지만, 질문에 지정된대로 Vehicle List에 유지되지 않습니다. – Sparko

+0

알았어, 그만해라! –

관련 문제