1

是否有一种简单/简单的方法来使用某种并行数组?我有 2 个数组:

    public class ApiArray
    { 
         //.. Arrays were filled (E.g. Id:{1,2,7,8,10}, Names:{name1, name2, name3, name4, name5} 
         public Array Id { get; set; }
         public Array Names { get; set; }
    }

    //..
    foreach (var N in ApiArray.Names)
    {
         listBox1.Items.Add(N);
    }

选定的 Names 数组必须链接到 Id 数组中的相同位置。Id 数组不包含连续数字。

选择名称时,必须使用 ID。

感谢您的建议。

4

5 回答 5

3

用于对来自 array 的键的数组Array.Sort(keys,items)进行排序。itemskeys

于 2012-07-14T13:40:26.530 回答
3

如果IdName属于同一个对象,您应该将它们分组到一个类中:

class IdName
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public IdName myArray[];
于 2012-07-14T13:41:15.210 回答
1

你有什么理由不能突破IdName进入自己的一类?

public class MyObject
{
    public string ID;
    public string Name;
}

public class ApiArray
{
    public List<MyObject> MyObjects;
}
于 2012-07-14T13:41:46.637 回答
0

你必须做

Class User 
{  
  String name;int id;  
  User(name,id){this.id=id; this.name=name;} 
}

现在您必须维护单个数组,每个数组索引由用户对象组成,以防如果您对该数组进行排序,整个对象将更改它们的索引位置。谢谢

于 2012-07-14T13:41:04.347 回答
0

如果您有超过 2 个并行数组,则创建一个您正在对其进行排序的临时副本可能会很有用,每次运行排序功能时都从原始副本中重新复制它,当然最后一个除外。下面是我正在为学校工作的一个项目的片段。数组在其他地方声明和初始化,但希望你明白。

string[] tempCustomerName = new string[CustomerName.Length];

CustomerName.CopyTo(tempCustomerName, 0);
Array.Sort(tempCustomerName, Id);

CustomerName.CopyTo(tempCustomerName, 0);
Array.Sort(tempCustomerName, CustomerDiscountCode);

Array.Sort(CustomerName, CustomerRate);

此外,最好使用一个类来封装数组,然后制作该类的集合,这样排序更简单。像这样的东西:

Public class Customer
{
  public string Name {get; set;}
  public int Id {get; set;}
  public char DiscountCode {get; set;}
  public decimal Rate {get; set;}
}

将客户添加到列表中,然后按如下方式排序:

List<Customer> SortedList = objListOrder.OrderBy(o=>o.Name).ToList();*

*借自https://stackoverflow.com/a/3309230/5676505

于 2018-04-09T20:33:23.343 回答