2013-02-15 3 views
1

.net 2.0에서 작업 중 C#키 - 값 쌍을 다른 값을 갖는 키로 정렬

파일에서 읽는 키/값 집합이 있습니다. 따라서 키는 같을 수 있지만 각 키와 관련된 다른 값이 있습니다.

정렬 된 순서로 키를 나열하고 연결된 값이 서로 다른 열의 값과 함께 그리드에 표시하려고합니다. 내가 무엇을 할 수 있을지 ? SortedList 클래스로 시도했지만 중복 키를 허용하지 않습니다.

in .net 3.0 linq 작동하지만 .net 2.0에서해야합니다.

어떻게하면됩니까?

당신은 당신의 시나리오에 DataTable를 사용할 수
+0

'IComparer'를 구현하십시오. [자습서를 보려면 여기를 참고하십시오] (http://www.codeproject.com/Articles/42839/Sorting-Lists-using-IComparable-and-IComparer-Inte). – Candide

+0

as sidenote : .net 2.0을 타겟팅하는 동안 대부분의 C# 3.0 기능을 사용할 수 있습니다. – CodesInChaos

답변

2

하면 주소 우리에게 당신이이 개 부분에서 지적한 문제를 보자
[A] 동일한 키를 가지고 있지만 다른 값을 갖는 문제 [Soln] 사용자 정의 클래스 즉, 아래 코드 스 니펫의 DataKeys를 선언하십시오.
[b] 목록에서 키 순서 지정 [Soln] 사용자 정의 클래스에 대한 IComperable 구현. 다음은

당신이 구현할 수있는 샘플 클래스는 다음과 같습니다

private static void Main(string[] args) 
    { 
     List<DataKeys> dataRepository = new List<DataKeys>() 
              { 
               new DataKeys(10, "Key-10"), 
               new DataKeys(11, "Key-11"), 
               new DataKeys(9, "Key-9"), 
               new DataKeys(8, "Key-8"), 
               new DataKeys(100, "Key-100") 
              }; 
     dataRepository.Sort(); 

     foreach (var dataKeyse in dataRepository) 
     { 
      Console.WriteLine(dataKeyse.Key); 
     } 
    } 

출력 :

enter image description here

internal class DataKeys : IComparable<DataKeys> 
    { 
     private int key; 

     private string values; 

     public DataKeys(int key, string values) 
     { 
      this.key = key; 
      this.values = values; 
     } 

     internal int Key 
     { 
      get { return key; } 
     } 

     internal string Values 
     { 
      get { return Values; } 
     } 

     public int CompareTo(DataKeys other) 
     { 
      if (this.key > other.key) return 1; 
      else if (this.key < other.key) return -1; 
      else return 0; 
     } 

    } 

그냥 확인하려면이 코드 샘플 클라이언트 코드를 기반으로 실행 얼마나

0

:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     string[] lines = System.IO.File.ReadAllLines("TextFile.txt"); 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("key"); 
     dt.Columns.Add("value"); 
     foreach (string line in lines) 
     { 
      string key = line.Split(',')[0]; 
      string value = line.Split(',')[1]; 
      dt.Rows.Add(key, value); 
     } 
     dt.DefaultView.Sort="key"; 
     dataGridView1.DataSource = dt; 
    } 
} 

TextFile.txt 텍스트 파일 :

1,test1 
2,test2 
3,test3 
2,test4 
1,test5 
1,test6 
+0

.net 2.0에서 사용하고 있습니다. var available available – sudhanshu

+0

Visual Studio의 버전은 무엇입니까? –

+0

'var '의 사용법을 명시 적 유형으로 대체하여 답을 업데이트했습니다. –

관련 문제