【问题标题】:Accessing elements of an Array of an Array of Objects访问对象数组的数组元素
【发布时间】:2014-06-10 10:01:49
【问题描述】:

我是 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。

提前感谢您提供任何提示和/或解决方案!

【问题讨论】:

  • I can't access any of the array elements 你使用的代码在哪里itemcombo

标签: c# arrays list nested cartesian-product


【解决方案1】:

我认为 [] 不适用于 IEnumerable 类型。而不是:

    itemcombo[x]

尝试使用:

    itemcombo.ElementAt(x)

【讨论】:

    【解决方案2】:

    您需要在查询周围加上括号

    (from itemset1 in itemarr1
     from itemset2 in itemarr2
     from itemset3 in itemarr3
     select new[] { itemset1, itemset2, itemset3 }).ToList();
    

    【讨论】:

      猜你喜欢
      • 2020-11-19
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      • 2020-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多