2013-08-18 2 views
-1

나는이 수업에 기록되는 하나 개의 목록이 있습니다일치 값

public class states 
{ 
    public states() { } 
    public long regID { get; set; } 
    public string state { get; set; } 
    public string county { get; set; } 
} 
List<states> s = {1,2,3,4}regID 
       {MA,NY,CT}state 
       {Suffolk,NY,Hampden}county 

원 :이 같은 다른리스트 클래스가 가지고

public class keyfrs 
{ 
    public keyfrs() { } 
    public long regID { get; set; } 
    public long ID { get; set; } 
    public string county { get; set; } 
    public string state { get; set; } 
} 
List<keyfrs> k = {1,2,3,4}] regID 
       {A,B,C,D} ID 

을 목록의 regID와 일치하는 keyfrs 목록에 county 및 state를 쓰십시오. 내 프로그램이 지금까지 두 파일을 구문 분석하고 각 클래스를 대응하는 다른 클래스 목록에 작성합니다. 보시다시피 두 클래스 모두 regID 열을가집니다. 내가해야할 일은 regID에 두리스트를 함께 맞추고 countfrs리스트 클래스에 county와 state를 써서이리스트를 추가 한 컬럼을 가진 새로운 파일로 그리스트를 출력하는 것이다.

static void Main(string[] args) 
    { 

     PARSEkeYfrs(); 
     parsestateFile(); 
     matchValues(); 
      outputFile(); 

    } 
    private static void outputFile() 
    { 
     string filename = @"c:\keyswCounty.csv"; 

     using(StreamWriter write = new StreamWriter(filename)) 
     { 
      write.WriteLine("RegIF"+","+"ID"+","+"County"+","+"State"); 
      foreach(keyfrs k in keysandID) 
      { 
       write.WriteLine(k.regID +"," +k.ID+","+k.county+","+k.state); 
      } 

     } 
    } 

    private static void matchValues() 
    { 
     foreach(keyfrs k in keysandID) 
     { 


     } 
    } 

    private static void parsestateFile() 
    { 
     int a = 0; 
     string filename = @"c:\ALLStates.txt"; 
     using (StreamReader read = new StreamReader(filename)) 
     {    
       read.ReadLine(); 
       while (!read.EndOfStream) 
       { 
        a++; 
        try{ 
        string line = read.ReadLine(); 
        string[] splitline = line.Split(','); 
        if(splitline[1]!="") 
        { 
         states s = new states(); 
         s.regID = Convert.ToInt64(splitline[0]); 
         s.county = Convert.ToString(splitline[1]); 
         s.state = Convert.ToString(splitline[2]); 
         stateFile.Add(s); 
        } 
        } 
        catch(Exception ex) 
        { 
         string.Format("error:{0}" + ex.Message.ToString()); 
        } 

       } 

      } 
    } 

    private static void PARSEkeYfrs() 
    { int a = 0; 
     string filename = @"c:\key_frs.csv"; 
     using (StreamReader read = new StreamReader(filename)) 
     {    
       read.ReadLine(); 
       while (!read.EndOfStream) 
       { 
        try{ 
         a++; 
        string line = read.ReadLine(); 
        string[] splitline = line.Split(','); 
        if(splitline[1]!="") 
        { 
         keyfrs k = new keyfrs(); 
         k.regID = Convert.ToInt64(splitline[0]); 
         k.ID = Convert.ToInt64(splitline[1]); 
         k.county = ""; 
         k.state = ""; 
         keysandID.Add(k); 
        } 
        } 
        catch(Exception ex) 
        { 
         string.Format("error:{0}"+ex.Message.ToString()); 
        } 

       } 

      } 


     } 

답변

0
switched the state list to a dictionary and matched the values by the key value pair by using the TryGetValue method.