我有一个文本文件,其中包含每行的产品信息,格式为" productCode,productName,amountInStock等。"
我已使用File.ReadAllLines
将每一行存储为数组中的元素,现在我使用这些字符串将值分配给产品结构列表。
以下是用于将数组中的字符串拆分为子字符串的代码:
foreach (String line in readProducts)
{
productData = line.Split(',');
readProducts[foreachCount] = productData;
foreachCount++;
}
这在Visual Studio中给了我这个错误:
Cannot implicitly convert type 'string[]' to 'string'
假设我必须使用结构而不是类,那么完成此任务的最佳方法是什么?
答案 0 :(得分:0)
使用这种方式
List<string[]> readProducts = new List<string[]>();
foreach (String line in readProducts)
{
productData = line.Split(',');
readProducts.Add(productData);
}
答案 1 :(得分:0)
这是一个更好的选择:
让product
成为类,包含问题中提到的productCode, productName,amountInStock,etc..
等属性。您可以创建product
列表并直接将输入值分配给列表,如下所示:
string path="path here"
List<product> ProductList = new List<product>();
foreach (string line in File.ReadAllLines(path))
{
string[] productDetails = line.Split(',');
ProductList.Add(new product() { productCode = productDetails[0], productName = productDetails[1] });
}
Product类的位置如下:
public class product
{
public string productCode { get; set; }
public string productName { get; set; }
// rest of properties
}
答案 2 :(得分:0)
您可以使用Select
投射到新收藏集:
var allItems = readProducts.Select(line => line.Split(',')); // collection of string arrays
或投射到新类型:
var allProducts = readProducts.Select(line => line.Split(',')) // collection of string arrays
.Select(array => new Product {
productCode = array[0],
productName = array[1],
amountInStock = array[2],
// etc.
}); // collection of Products
答案 3 :(得分:0)
使用System
和锯齿状数组,我能够解决问题。这是工作程序中使用的代码。
int i = 0;
String[][] allProducts = new String[readProducts.Length][];
var parsedProduct = readProducts.Select(item => item.Split(','));
foreach (var item in parsedProduct)
{
allProducts[i] = item;
i++;
}
allProducts[][]
是一个锯齿状的数组。否则称为阵列数组。
parsedProduct
类似于锯齿状数组,每个元素包含另一个数组,其中从当前行readProduct
中提取的子字符串作为其元素。
allProducts
的元素被parsedProducts
循环分配给foreach
元素的内容。
据我所知,没有任何方法可以切断中间人并直接在Select()
使用readProducts
。但我可能是错的。