2014-05-24 36 views
0

我有串称为“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 

     } 

然后我想要做的就是填充我的“listOfProducts”每“串idPart”,每“串gtinPart”设定为“listOfProducts”性的判定Id和产品名称的列表。

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

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

它是什么,你不明白吗?请澄清并显示您尝试解决您的问题。 – Silvermind

+3

我很难相信你在没有先学习如何为一个对象的属性赋值的情况下编写这段代码。 – Groo

+0

@格罗我很抱歉,但我不知道如何在每个创建的字符串中对每个创建的字符串进行排序,以便将其添加到我的新列表中。产品 – user3228992

回答

3

你是相当接近。就在地方添加这个您的TODO注释:

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

谢谢!我对c#语言很陌生,有时候会忘记它的一部分。感谢您解决我的问题! – user3228992

0

只是为了完整起见,并允许您比较的替代品,简单的解决方法是把它写“手写”,用这个来代替你的TODO的:

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

这有完全相同的效果SoftwareFactor的回答以上,但需要4行,而不是1

,如果你有超过Product类控制,你似乎在这种情况下的另一种解决方案仅适用,这就是广告d一个构造函数,允许两个属性的设置:

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

在TODO的使用将随后成为这个:

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