当我尝试访问另一个数组中的数组元素时,我对C#相当新并且收到错误。对象本身就是一个自定义类,这可能是我遇到问题的原因。
这是一个通用的例子:
我的数据结构如下:
public class Item
{
public string name = "";
public int var1 = 0;
public int var2 = 0;
}
Item item1 = new Item1();
public class Item1 : Item
{
public Item1()
{
name = "Item 1";
var1 = 10;
var2 = 100;
}
}
然后我创建了这些项目的列表(使用列表,因为维度是可变的)。我将它们转换为数组,因为我打算使用LINQ笛卡尔函数。
List<Item> itemlist1 = new List<Item>();
List<Item> itemlist2 = new List<Item>();
List<Item> itemlist3 = new List<Item>();
itemlist1.Add(item1);
itemlist1.Add(item2);
itemlist2.Add(item3);
itemlist2.Add(item4);
itemlist3.Add(item5);
itemlist4.Add(item6);
Item[] itemarr1 = itemlist1.ToArray();
Item[] itemarr2 = itemlist2.ToArray();
Item[] itemarr3 = itemlist3.ToArray();
这里我使用LINQ笛卡尔函数,如下所示:
var itemcombo = from itemset1 in itemarr1
from itemset2 in itemarr2
from itemset3 in itemarr3
select new[] { itemset1, itemset2, itemset3 }.ToList();
从这里开始,我无法访问任何数组元素。尝试访问itemcombo [x]会出现错误:
"Cannot apply indexing with [] to an expression of type System.Collections.Generic.IEnumerable<System.Collections.Generic.List<ItemExample.MainWindow.Item>>'"
我尝试将其转换为列表,转换为数组。我似乎无法弄清楚如何访问itemcombo [0] [0] .name。
提前感谢任何提示和/或解决方案!
答案 0 :(得分:0)
您需要围绕查询的括号
(from itemset1 in itemarr1
from itemset2 in itemarr2
from itemset3 in itemarr3
select new[] { itemset1, itemset2, itemset3 }).ToList();
答案 1 :(得分:0)
我不认为[]适用于IEnumerable类型。而不是:
itemcombo[x]
尝试使用:
itemcombo.ElementAt(x)