【问题标题】:c# a collection to hold two arraylist时间:2018-01-01 标签:c#a collection to hold两个arraylist
【发布时间】:2012-12-24 20:30:24
【问题描述】:

我正在使用 C#。

我创建了 2 个名为 NamesPerformances 的数组列表,其中的数据是从我的数据库中填充的。

我想创建一个数组列表或类似二维数组的东西,所以 array[Name][Performance].

  • array[0][0] => 应该给我第一人称的第一性能数据
  • array[0][1] => 应该给我第一人称第二性能数据
  • array[0][2] => 应该给我第一人称第三性能数据...

NamesPerformance 的大小会因不同的 sql 查询而变化。 由于大小是可变的,我尝试在这些循环中使用循环和 NamePerformance 数组列表的大小。我如何处理该集合以保存我的两个数组列表?

【问题讨论】:

  • 如何将名称和性能联系起来?
  • “姓名”和“业绩”的数据是否在同一个数据库中?如果是这样,也许您可​​以在 SQL 中创建结果集并在检索后转换为某种自定义类型?

标签: c# collections multidimensional-array arraylist


【解决方案1】:

为什么不使用通用列表?

然后,您可以创建一个保存 Person 及其性能数据的类型,如下所示:

class PersonPerformance
{
   public string Name { get; set; }

   public List<Performance> Performances { get; set; }
}

而且你很容易创建一个集合:

var performances = new List<PersonPerformance>();

【讨论】:

  • 嘿,OP,看看“组合”的面向对象编程概念。这就是弗雷德里克所说的。在处理数据时,这个概念将为您打开许多大门。 en.wikipedia.org/wiki/Object_composition
【解决方案2】:

你可以使用类似的东西

        IList<KeyValuePair<string, string>> innerList = new List<KeyValuePair<string, string>>();
        IList<IList<KeyValuePair<String,string>>> list=new List<IList<KeyValuePair<string, string>>>();
        list.Add(innerList);

其中 KeyValuePair 包含名称和性能元素

【讨论】:

    【解决方案3】:

    我假设你的名字是字符串类型。

    我通常会这样做(如果我没有设置尺寸)

    List<KeyValuePair<string, TYPE_X>> list = new List<KeyValuePair<string, TYPE_X>>();
    

    或(大小已知)

    KeyValuePair<string, TYPE_X>[] array = new KeyValuePair<string, TYPE_X>[size];
    

    或更好

     public Dictionary<string, TYPE_X> dict = new Dictionary<string, TYPE>();
    

    如果名称是唯一的并且我想这样访问它们(不按顺序):

    TYPE_X object = dict["myName"];
    

    【讨论】:

      【解决方案4】:

      您可以使用使用Dictionary&lt;Name,List&lt;Performance&gt;&gt; 类型 因此,对于每个名称,您都会获得一组表演

      【讨论】:

        猜你喜欢
        • 2014-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-05
        • 2018-01-03
        • 1970-01-01
        相关资源
        最近更新 更多