Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Arraylist的Arraylist中的字符串数组_C#_.net_Linq - Fatal编程技术网

C# Arraylist的Arraylist中的字符串数组

C# Arraylist的Arraylist中的字符串数组,c#,.net,linq,C#,.net,Linq,我想从Arraylist的Arraylist创建一个字符串数组 下面是一个代码: ArrayList MainList = new ArrayList(); ArrayList subList = new ArrayList(); subList.Add("A"); subList.Add("Apple"); MainList.Add(subList); subList = new ArrayList(); subList.Add("B"); subList.Add("Banana"); M

我想从Arraylist的Arraylist创建一个字符串数组

下面是一个代码:

ArrayList MainList = new ArrayList();

ArrayList subList = new ArrayList();
subList.Add("A");
subList.Add("Apple");
MainList.Add(subList);

subList = new ArrayList();
subList.Add("B");
subList.Add("Banana");
MainList.Add(subList);

subList = new ArrayList();
subList.Add("C");
subList.Add("Caret");
MainList.Add(subList);

string[] AllList = { "A", "Apple", "B", "Banana", "C", "Caret" };
string[] OnlySome = { "Apple", "Banana", "Caret" };
我知道我们可以使用for each循环来实现,但是如何使用LINQ查询来获取AllList和OnlySome字符串数组呢

谢谢

当然可以:

var allList = 
    MainList.
        Cast<ArrayList>().
        SelectMany(a => a.Cast<string>()).
        ToArray();

var onlySome = 
    MainList.
        Cast<ArrayList>().
        Select(a => 
            a.Cast<string>().
                Skip(1).
                First()).
        ToArray();
var allList=
主列表。
Cast()。
选择many(a=>a.Cast()。
ToArray();
var onlySome=
主列表。
Cast()。
选择(a=>
a、 Cast()。
跳过(1)。
第一个()。
ToArray();

我不确定只有部分患者的确切情况,因此我考虑了两种选择

  • 每隔一个元素选择一个(奇数索引,偶数位置)
    onlySome1
  • 选择任何长度大于1的字符串
    onlySome2

        var allList = (from al in MainList.ToArray()
                      from s in (al as ArrayList).ToArray()
                      select s as string).ToArray();
    
        // if you want to select every other element
        var onlySome1 = allList.Where((s, index) => index % 2 == 1).ToArray();
    
        // if you want to select all the strings with 2 or more characters.
        var onlySome2 = allList.Where(s => (s as string).Length > 1).ToArray(); 
    

您使用
ArrayList
而不是
List
有什么特殊原因吗?我还建议您不要将子列表存储为ArrayList。看起来你更应该使用字典、列表、列表或列表之类的东西。我不确定在这种情况下,类型为的
是否更好。当我知道集合包含该类型的元素并且它们是我所关心的全部时,我确实更喜欢使用类型的
Cast