将拆分字符串添加到新列表中的属性

时间:2014-05-24 22:52:20

标签: c#

我有一个名为“gtinWithId”的字符串列表,如下所示:

1:043289235053
2:842372362912
3:672348234722

然后我有这个班:

public class Product
{
    public string Id { get; set; }
    public string ProductName { get; set; }
}

然后我有这个循环来分割我的字符串列表,我的目标是使用“:”之前的部分作为Id。

        var listOfProducts = new List<Product>();
        foreach (var gtin in gtinWithId)
        {
            string[] wholeString = gtin.Split(':');
            string idPart = wholeString[0];
            string gtinPart = wholeString[1];

            //TODO
            // I really don't know what to do here to assign each idPart and each gtinPart to
            // the Id-property and the ProductName.propery in my new list

        }

然后我要做的是用每个“string idPart”填充我的“listOfProducts”,并将每个“string gtinPart”设置为“listOfProducts”属性Id和ProductName的列表。

所以我们的目标是拥有一个看起来像这样的“listOfProducts”:

Id = 1 , ProductName = 043289235053
Id = 2 , ProductName = 842372362912
Id = 3 , ProductName = 672348234722

2 个答案:

答案 0 :(得分:3)

你很亲密。只需添加此代替您的TODO评论:

listOfProducts.Add(new Product() { Id = idPart, ProductName = gtinPart });

答案 1 :(得分:0)

只是为了完整性并允许您比较替代方案,更简单的解决方案是将其写为&#34; longhand&#34;,用此代替您的TODO:

Product p = new Product();
p.Id = idPart;
p.ProductName = gtinPart;
listOfProducts.Add(p);

这与上面的SoftwareFactor答案具有完全相同的效果,但需要4行而不是1行。

另一种解决方案只有在您可以控制Product类时才有效,就像您在此实例中看到的那样,那就是添加一个允许设置两个属性的构造函数:

public class Product
{
    public Product(string id, string productName)
    {
        this.Id = id;
        this.ProductName = productName;
    }
    // ...
}

您的TODO中的用法将变为:

listOfProducts.Add(new Product(idPart, gtinPart));