1

私は.net2.0c#で作業しています

ファイルから読み取っているキー/値のセットがあります。したがって、キーは同じでも、それぞれに異なる値が関連付けられている場合があります。

キーを並べ替えられた順序で一覧表示し、さまざまな値と同じくらい多くの値が列に関連付けられたグリッドで表示したいと思います。私に何ができる ?SortedListクラスで試しましたが、重複キーは許可されません。

.net 3.0ではlinqは機能しますが、.net2.0で実行する必要があります。

どうすればいいですか?

4

2 に答える 2

2

あなたが指摘した問題を 2 つの部分で解決しましょう

[b] リスト内のキーの順序付け [Soln] ユーザー定義クラスの IComperable の実装。

以下は、実装できるサンプル クラスです。

    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;
        }

    }

サンプルクライアントコードに基づいてこのコードがどのように実行されるかを確認するだけです:

    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);
        }
    }

出力:

ここに画像の説明を入力

于 2013-02-16T16:45:12.570 に答える
0

DataTableシナリオでa を使用できます。

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
于 2013-02-15T11:21:03.653 に答える