我有一个名为“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
答案 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));