1

Hashtable mainhash = new Hashtable();

        testdata td = new testdata() { value = "td" };
        td.hash.Add("1", "tdvalue1");
        td.hash.Add("2", "tdvalue2");
        td.hash.Add("3", "tdvalue3");
        td.hash.Add("4", "tdvalue4");
        td.hash.Add("5", "tdvalue5");

        testdata td1 = new testdata() { value = "td1" };
        td1.hash.Add("1", "td1value1");
        td1.hash.Add("2", "td1value2");
        td1.hash.Add("3", "td1value3");
        td1.hash.Add("4", "td1value4");
        td1.hash.Add("5", "td1value5");

        testdata td2 = new testdata() { value = "td2" };
        td2.hash.Add("1", "td2value1");
        td2.hash.Add("2", "td2value2");
        td2.hash.Add("3", "td2value3");
        td2.hash.Add("4", "td2value4");
        td2.hash.Add("5", "td2value5");

        testdata td3 = new testdata() { value = "td3" };
        td3.hash.Add("1", "td3value1");
        td3.hash.Add("2", "td3value2");
        td3.hash.Add("3", "td3value3");
        td3.hash.Add("4", "td3value4");
        td3.hash.Add("5", "td3value5");

        testdata td4 = new testdata() { value = "td4" };
        td4.hash.Add("1", "td4value1");
        td4.hash.Add("2", "td4value2");
        td4.hash.Add("3", "td4value3");
        td4.hash.Add("4", "td4value4");
        td4.hash.Add("5", "td4value5");

        mainhash.Add(1, td);
        mainhash.Add(2, td1);
        mainhash.Add(3, td2);
        mainhash.Add(4, td3);
        mainhash.Add(5, td4);

LinqでSelectManyを使用してすべてのキーを1つのリストに選択する方法?? 私はこれで何をする必要がありますか??

var values = mainhash.Values.Cast<testdata>().Select(x => x.hash)
                                             .SelectMany(x=> x.Keys);

これで何が間違っていますか??

4

2 に答える 2

2

から使用する型がわかりませんHashtable.Keys

試す:

var values = mainhash.Values.Cast<testdata>().Select(x => x.hash)
                           .SelectMany(x => x.Keys.Cast<string>());

しかし、より良い:Dictionary<TKey,TValue>の代わりに使用しHashtableます。

于 2013-01-17T11:27:01.623 に答える
0

以下のクエリを試してください -

var values = mainhash.Values.Cast<testdata>().SelectMany(x => x.hash.Keys.Cast<string>());

ただし、ハッシュテーブルの代わりに辞書を使用してください。実際には、オブジェクトをキャストするオーバーヘッドが削減されます。

上記のコードがお役に立てば幸いです!!

于 2013-01-17T12:01:18.990 に答える