C# 如何将文件中的项目读取到项目列表中,并将属性设置为文件中的值?
您好,我正在尝试用c#winforms创建一个库存日志系统,对于如何将项目读回列表并将数据存储到属性中的想法,我有些困惑 我将从一个csv文件中读取,其中每行是一个项目,每个属性用逗号分隔 主课C# 如何将文件中的项目读取到项目列表中,并将属性设置为文件中的值?,c#,linq,list,streamreader,C#,Linq,List,Streamreader,您好,我正在尝试用c#winforms创建一个库存日志系统,对于如何将项目读回列表并将数据存储到属性中的想法,我有些困惑 我将从一个csv文件中读取,其中每行是一个项目,每个属性用逗号分隔 主课 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Te
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//using System.IO;
//using Microsoft.VisualBasic;
namespace stock_list
{
public partial class Form1 : Form
{
private List<item> itemlist = new List<item>((1));
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btnSave_Click(object sender, EventArgs e)
{
saveitem(Convert.ToInt64(txtStallNumber.Text), Convert.ToInt64(txtStockNumber.Text), txtDescription.Text, Convert.ToDecimal(txtPaidprice.Text), Convert.ToDecimal(txtSoldPrice.Text));
}
private void btnItems_Click(object sender, EventArgs e)
{
readfromfile();
}
private void readfromfile()
{
var reader = new System.IO.StreamReader(@"file.csv", Encoding.UTF8, false);
while (!reader.EndOfStream)
{
//what todo here??
}
}
private void saveitem(long stallnumberpar, long stocknumberpar, string itemdiscriptionpar, decimal boughtpricepar, decimal soldpricepar, decimal profitorlosspar = 0)
{
itemlist.Add(new item { stallnumber = stallnumberpar, stocknumber = stocknumberpar, itemdescription = itemdiscriptionpar, boughtprice = boughtpricepar, soldprice = soldpricepar, profitorloss = soldpricepar - boughtpricepar});
txtDescription.Clear();
txtPaidprice.Clear();
txtSoldPrice.Clear();
txtStallNumber.Text = "";
txtStockNumber.Clear();
txtStallNumber.Focus();
MessageBox.Show("Item Saved");
}
private void btnQuery_Click(object sender, EventArgs e)
{
RunQueryDescription(Microsoft.VisualBasic.Interaction.InputBox("Enter Search Criteria", "Enter Search Criteria", "Default",0,0));
}
private void RunQueryDescription(string description)
{
//List<item> products = new List<item>((1));
var writer = new System.IO.StreamWriter(@"file.csv", true, Encoding.UTF8);
item[] productsarr = new item[itemlist.Count];
int index = 0;
foreach (item product in itemlist)
{
if (product.itemdescription.Contains(description))
{
productsarr[index] = product;
index++;
}
else
{
index++;
continue;
}
}
for (int i = 0; i < productsarr.Length; i++)
{
MessageBox.Show(productsarr[i].stallnumber.ToString() +
productsarr[i].stocknumber.ToString() +
productsarr[i].itemdescription.ToString() +
productsarr[i].boughtprice.ToString() +
productsarr[i].soldprice.ToString() +
productsarr[i].profitorloss.ToString());
writer.Write(productsarr[i].stallnumber.ToString() + "," +
productsarr[i].stocknumber.ToString() + "," +
productsarr[i].itemdescription.ToString() + "," +
productsarr[i].boughtprice.ToString() + "," +
productsarr[i].soldprice.ToString() + "," +
productsarr[i].profitorloss.ToString());
writer.Close();
writer.Dispose();
}
}
}
}
编辑:
示例文件
1,1,Vase,1.00,2.00,1.00
任何帮助都将受到重视
提前谢谢 尝试拆分分隔符上的每一行(很可能是逗号),然后解析出该行并将
项的新实例添加到列表中。类似的内容应该在您的循环中起作用(未经测试):
尝试拆分分隔符上的每一行(很可能是逗号),然后解析出该行并将项的新实例添加到列表中。类似的内容应该在您的循环中起作用(未经测试):
您可以使用文件.ReadAllLines
读取该文件
private List<item> itemlist = new List<item>();
private void readfromfile()
{
var lines = System.IO.File.ReadAllLines("path");
foreach (string item in lines)
{
var values = item.Split(',');
itemlist.Add(new item()
{
stallnumber = long.Parse(values[0]),
stocknumber = long.Parse(values[1]),
itemdescription = values[2],
//and so on
});
}
}
private List itemlist=new List();
私有void readfromfile()
{
var lines=System.IO.File.ReadAllLines(“路径”);
foreach(行中的字符串项)
{
var值=项目分割(',');
itemlist.Add(新项()
{
stallnumber=long.Parse(值[0]),
stocknumber=long.Parse(值[1]),
itemdescription=值[2],
//等等
});
}
}
您可以使用文件.ReadAllLines
读取该文件
private List<item> itemlist = new List<item>();
private void readfromfile()
{
var lines = System.IO.File.ReadAllLines("path");
foreach (string item in lines)
{
var values = item.Split(',');
itemlist.Add(new item()
{
stallnumber = long.Parse(values[0]),
stocknumber = long.Parse(values[1]),
itemdescription = values[2],
//and so on
});
}
}
private List itemlist=new List();
私有void readfromfile()
{
var lines=System.IO.File.ReadAllLines(“路径”);
foreach(行中的字符串项)
{
var值=项目分割(',');
itemlist.Add(新项()
{
stallnumber=long.Parse(值[0]),
stocknumber=long.Parse(值[1]),
itemdescription=值[2],
//等等
});
}
}
读入数据,然后使用该方法解析值,然后构建项的实例
并将该项添加到您的列表中。我可以看到一些示例代码吗?Both Grant和Hossein的回答与我的注释依赖于相同的逻辑,只是他们只是使用String.Split
。同样有效的方法。读入数据,然后使用该方法解析出值,然后构建item
的实例,并将该项添加到您的列表中。我可以看到一些示例代码吗?Both Grant和Hossein的回答与我的注释依赖相同的逻辑,只是他们只是使用String.Split
。同样有效的方法。
private List<item> itemlist = new List<item>();
private void readfromfile()
{
var lines = System.IO.File.ReadAllLines("path");
foreach (string item in lines)
{
var values = item.Split(',');
itemlist.Add(new item()
{
stallnumber = long.Parse(values[0]),
stocknumber = long.Parse(values[1]),
itemdescription = values[2],
//and so on
});
}
}