入力:次のコードによって文字列から抽出された、特定の日のすべての売上データ。
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);
(これはこれまでの私の完全なコードであり、部分に分割されただけで、プログラム内と同じように上から下に読み取られます-新しいクラスは別として)。
この時点で私が苦労しているのは、各変数の値をクラスのフィールドにロードし(CurrencyをCrncyとして、mvolumeをtotalcashとして、文字をcodelettersとして保存)、そのオブジェクト(Sale)をに保存することです。リスト(販売)して、もう一度繰り返します。私はこれに対する本当に基本的な解決策があるとかなり確信していますが、私がそれを考えることができれば私は詰め込まれています。
編集:申し訳ありませんが、それを解決し、コードを編集しました。それに応じて、私が試したことは機能しませんでしたが、私がやろうとしていることの論理を伝える必要があります。
Sale.CashTotal = mvolume;
Sale.Crncy = currency;
Sale.codeletters = letters;
文字列を構成要素に分解しましたが、リストに格納できるオブジェクトは1つだけなので、それらをSaleとして再結合し、代わりにリストに格納する必要がありますが、これらの値をSaleに取得するのは問題があることを証明します。