1

哈希表 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 将所有键选择到一个列表中?我需要做什么?

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

这有什么问题?

4

2 回答 2

2

它不知道要使用的类型 from 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 回答