输入:任何给定日期的所有销售数据,通过以下代码从字符串中提取:
class Program
{
static void Main(string[] args)
{
List<Sale> Sales = new List<Sale>();
// int l = 1;
using (StreamReader reader = new StreamReader("file.dat"))
{
string line;
var locations = new Dictionary<string, int[]>() {
{"210", new [] {405, 4, 128, 12, 141, 12, 247, 15, 121, 3}},
{"310", new [] {321, 4, 112, 12, 125, 12, 230, 15, 105, 3}},
{"410", new [] {477, 4, 112, 12, 125, 12, 360, 15, 105, 3}}
};
while ((line = reader.ReadLine()) != null)
{
var lineStart = line.Substring(0, 3);
if (lineStart == "210" || lineStart == "310" || lineStart == "410")
{
var currentLocations = locations[lineStart];
var letters = line.Substring(currentLocations[0], currentLocations[1]);
var volume =
int.Parse(line.Substring(currentLocations[2], currentLocations[3])) +
int.Parse(line.Substring(currentLocations[4], currentLocations[5]));
var price = long.Parse(line.Substring(currentLocations[6], currentLocations[7]));
var mvolume = price * volume;
var currency = line.Substring(currentLocations[8], currentLocations[9]);
这会从字符串中获取我想要的所需信息。
我有一个单独的类,具有与这些变量相同的字段(但名称略有不同)。
public class Sale
{
private int CashTotal;
private string codeletters;
private string Crncy;
}
在我的主要代码中,我有:
Sale s = new Sale();
Sales.Add(s);
(到目前为止,这是我的完整代码,只是分成几部分,它在程序中从上到下读取 - 除了新类)。
在这一点上,我正在努力做的是将每个 var 中的值加载到类中的字段中(将 Currency 存储为 Crncy,将 mvolume 存储为 totalcash,将字母存储为 codeletters),将该对象(Sale)存储到列出(销售),然后再次重复。我很确定有一个非常基本的解决方案,但如果我能想到的话,我会感到很满足。
编辑:对此感到抱歉,解决了那个问题并编辑了代码,因此,我将向您展示我尝试过的不起作用但应该传达我正在尝试做的事情的逻辑:
Sale.CashTotal = mvolume;
Sale.Crncy = currency;
Sale.codeletters = letters;
我已将字符串分解为其组成部分,但我只能将一个对象存储在列表中,因此我需要将它们重新组合为销售,并将其存储在列表中,但将这些值放入销售中是证明是有问题的。