我有一个这样的文本文件。我想逐行阅读并将这些信息存储到List<Store>
,其中Store
是自定义类型。
Store ID: 01
Name: Kingfisher
Branch Number: 1
Address: 23 Emerson St
Phone: 422361609
-----END OF RECORD-----
Store ID: 02
Name: Harvey
Branch Number: 2
Address: 23 Korby St
Phone: 422361609
-----END OF RECORD-----
Store ID: 175
Name: Roger
Branch Number: 4
Address: 275 Carmody Rd
Phone: 428395719
-----END OF RECORD-----
这是我正在使用的。因为记录总是在列表中显示的顺序,所以我逐行读取和分配store.ID
,store.name
...,直到达到创纪录的最终属性store.phoneNumber
,它然后将其添加到列表并保持持续下一个foreach
循环Store ID
。
但是问题是当我在列表中搜索时,它只能返回最终记录。列表似乎只有一个元素,即最终记录。谁能指出我错了吗?
var storeTemp = new Store();
List<Store> stores = new List<Store>();
foreach (string line in File.ReadAllLines(@"C:\Store.txt"))
{
if (line.Contains("Store ID: "))
storeTemp.ID = line.Substring(10);
if (line.Contains("Name: "))
storeTemp.name = line.Substring(6);
if (line.Contains("Branch Number: "))
storeTemp.branchNO = Convert.ToInt32(line.Substring(15));
if (line.Contains("Address: "))
storeTemp.address = line.Substring(9);
if (line.Contains("Phone: "))
{
storeTemp.phoneNumber = Convert.ToInt32(line.Substring(7));
stores.Add(storeTemp);
}
}
List<Store> stores = new List<Store>();
var storeTemp = new Store();
foreach (string line in File.ReadAllLines(@"C:\Store.txt"))
{
// You needto create a new instance each time
if (line.Contains("Store ID: "))
storeTemp.ID = line.Substring(10);
if (line.Contains("Name: "))
storeTemp.name = line.Substring(6);
if (line.Contains("Branch Number: "))
storeTemp.branchNO = Convert.ToInt32(line.Substring(15));
if (line.Contains("Address: "))
storeTemp.address = line.Substring(9);
if (line.Contains("Phone: "))
{
storeTemp.phoneNumber = Convert.ToInt32(line.Substring(7));
stores.Add(storeTemp);
storeTemp = new Store(); // You need to recreate the object, otherwise you overwrite same instance
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句