2

如何将逗号分隔的字符串添加到 ArrayList?我的字符串可以包含 1 个或多个我想添加到 ArrayList 的项目,每个项目都与其自己的 id 值结合,用下划线 (_) 分隔,因此它必须是分隔的 arraylist 项目。

例如:

string supplierIdWithProducts = "1_1001,1_1002,20_1003,100_1005,100_1006";

ArrayList myArrayList= new ArrayList();
myArrayList.Add("1001,1002"); // 1
myArrayList.Add("1003"); // 20
myArrayList.Add("1005,1006"); // 100

填充 ArrayList 后,我​​想将它传递给 Web 服务,这部分对我来说没问题
foreach (string item in myArrayList){}

我怎么能这样...

谢谢..

4

2 回答 2

6
string supplierIdWithProducts = "1_1001,1_1002,20_1003,100_1005,100_1006";

var lookup = 
     supplierIdWithProducts.Split(',')
                           .ToLookup(id => id.Split('_')[0],
                                     id => id.Split('_')[1]);

foreach (var grp in lookup)
{
    Console.WriteLine("{0} - {1}", grp.Key, string.Join(", ", grp));
}

将打印:

1 - 1001, 1002
20 - 1003
100 - 1005, 1006
于 2013-05-22T10:33:52.793 回答
1

首先,我建议您尝试使用 Dictionary 或任何其他通用集合而不是 ArrayList 以使其类型安全。然后使用 string.Split(char c) 并从那里开始处理。

这是一个关于如何做到这一点的想法。当然,使用扩展方法可能会变得更短。但这只是一个关于如何做到这一点的思考过程。

    static void ParseSupplierIdWithProducts()
    {
        string supplierIdWithProducts = "1_1001,1_1002,20_1003,100_1005,100_1006";

        //eg. [0] = "1_1001", [1] = "1_1002", etc
        List<string> supplierIdAndProductsListSeparatedByUnderscore = supplierIdWithProducts.Split(',').ToList();

        //this will be the placeholder for each product ID with multiple products in them
        //eg. [0] = key:"1", value(s):["1001", "1002"]
        //    [1] = key:"20", value(s):["1003"]
        Dictionary<string, List<string>> supplierIdWithProductsDict = new Dictionary<string, List<string>>();

        foreach (string s in supplierIdAndProductsListSeparatedByUnderscore)
        {
            string key = s.Split('_')[0];
            string value = s.Split('_')[1];

            List<string> val = null;

            //look if the supplier ID is present
            if (supplierIdWithProductsDict.TryGetValue(key, out val))
            {
                if (val == null)
                {
                    //the supplier ID is present but the values are null
                    supplierIdWithProductsDict[key] = new List<string> { value };
                }
                else
                {
                    supplierIdWithProductsDict[key].Add(value);
                }
            }
            else
            {
                //that supplier ID is not present, add it and the value/product
                supplierIdWithProductsDict.Add(key, new List<string> { value });
            }
        }
    }
于 2013-05-22T10:53:38.673 回答