C# Arraylist的Arraylist中的字符串数组
我想从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 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
。