我想要两个数组:
所以我希望例如:
[12,13,53,165,76]
这是供应商的ID和
supplierList[12]
供应商12的clientList。
我试过了:
public void calculateMetrics (MDG graph)
{
ArrayList supplierList = new ArrayList();
ArrayList clientList = new ArrayList();
foreach (EA.Package package in modelRepository.Models)
{
foreach (EA.Package pack in package.Packages)
{
foreach (EA.Connector link in pack.Connectors)
{
int supplier = link.SupplierID;
int client = link.ClientID;
for(int i=0; i<supplierList.Count; i++)
{
if (supplier.Equals(supplierList[i]))
{
**((ArrayList)clientList((ArrayList)supplierList[i]).Add(client);**
supplierList.Add(clientList);
但毫不奇怪它不起作用,但我不知道该怎么做。
答案 0 :(得分:4)
为什么不创建包含客户端ID列表作为成员变量的供应商对象?这样,您只需要一个List直接迭代,它将清理您的代码。
更具体地说:
供应商对象(类) - 具有ID(int),客户端(对象)
客户端对象(类) - 具有ID,可能还有其他属性。
查找对象创建的语法;你会发现在面向对象的环境中,创建对象真的有帮助!
答案 1 :(得分:0)
您可以将其设计为以下内容,
Class Supplier
{
int supplierID;
List<Client> clientListObj;
//Additional Details
}
Class Client
{
int clientID;
//Additional details
}
答案 2 :(得分:0)
如果你熟悉dictionnaries,那就是我会用的。它允许您通过简单的供应商或客户或特定的供应商客户端进行迭代。要清理代码,您可以创建供应商类和客户端类。
这是一个简单的例子
Dictionary<int, List<Client>> SuplierClients = new Dictionary<int, List<string>>();
foreach (KeyValuePair<int, List<Client>> suplierClient in SuplierClients)
{
// your supplier id, could even replace it with a Supplier Object.
Console.WriteLine(suplierClient.Key);
Console.WriteLine(suplierClient.Value.ToString());
}