-4

これは、私が使用しなければならない給与ファイルのサンプルです。従業員番号、さまざまな種類の収入、およびチェック日がリストされています。目標は、従業員の総賃金とその他の収入をリストする従業員ごとの小計を取得することです。これを行う方法について頭を悩ませることができません。誰かが提案を提供できますか? 私はC#でこれをやろうとしています。一部の従業員は 1 つの行しかないかもしれませんし、別の従業員は通常の賃金タイプがなく、控除/収入 (ボーナス、保険など) だけの行を持っているかもしれません。

240 TN  DP  800.00  1696.65 .00 .00 .00 .00 65  46.20   11/10/11
240 TN  DP  800.00  1696.65 .00 .00 .00 .00 66  124.83  11/10/11
240 TN  DP  800.00  1696.65 .00 .00 .00 .00 72  5.27    11/10/11
240 TN  DP  800.00  1696.65 .00 .00 .00 .00 ZC  1933.75 11/10/11
240 TN  DP  800.00  1643.55 .00 .00 .00 .00 65  46.20   11/25/11
240 TN  DP  800.00  1643.55 .00 .00 .00 .00 66  122.18  11/25/11
240 TN  DP  800.00  1643.55 .00 .00 .00 .00 72  5.27    11/25/11
240 TN  DP  800.00  1643.55 .00 .00 .00 .00 ZC  1893.87 11/25/11
240 TN  DP  .00 .00 .00 .00 400.00  .00 66  20.00   12/09/11
240 TN  DP  800.00  1595.25 .00 80.00   .00 .00 65  46.20   12/09/11
242 TN  DP  1538.46 .00 .00 .00 .00 .00 65  .00 07/08/11
242 TN  DP  1538.46 .00 .00 .00 .00 .00 67  .00 07/08/11
242 TN  DP  1538.46 .00 .00 .00 .00 .00 69  .00 07/08/11
242 TN  DP  1538.46 .00 .00 .00 .00 .00 72  .00 07/08/11
242 TN  DP  1538.46 .00 .00 .00 .00 .00 74  .00 07/08/11
242 TN  DP  1538.46 .00 .00 .00 .00 .00 ZC  1299.03 07/08/11
242 TN  DP  1538.46 .00 .00 .00 .00 .00 65  181.85  07/22/11
242 TN  DP  1538.46 .00 .00 .00 .00 .00 67  12.46   07/22/11
242 TN  DP  1538.46 .00 .00 .00 .00 .00 69  .00 07/22/11
242 TN  DP  1538.46 .00 .00 .00 .00 .00 72  22.15   07/22/11
242 TN  DP  1538.46 .00 .00 .00 .00 .00 74  .00 07/22/11
242 TN  DP  1538.46 .00 .00 .00 .00 .00 ZC  1124.70 07/22/11

編集: いくつかの質問に答えると、フィールドは左から順に、従業員番号、州、部門、通常の賃金、時間外賃金、休暇賃金、休日賃金、疾病賃金、特別賃金、収入コード、収入額、日付を確認します。各フィールドの従業員ごとの合計を取得する必要がありますが、チェック日ごとに従業員の賃金を複数回追加しないように注意してください。

4

1 に答える 1

0

テキストファイルで作業している場合は、それを読んでからデータを詳しく説明する必要があります。だからこれは私がすることです:

string[] lines = File.ReadLines(path);

次に、配列内の各要素 (行) について、データごとに分割します。

 __Data1___ ______________Data2_______________D3_ __D4__ ___Data5___
|          |                                |    |      |           |
 240 TN  DP  800.00  1696.65 .00 .00 .00 .00 65  46.20   11/10/11
 240 TN  DP  800.00  1696.65 .00 .00 .00 .00 66  124.83  11/10/11
 240 TN  DP  800.00  1696.65 .00 .00 .00 .00 72  5.27    11/10/11
 240 TN  DP  800.00  1696.65 .00 .00 .00 .00 ZC  1933.75 11/10/11
 240 TN  DP  800.00  1643.55 .00 .00 .00 .00 65  46.20   11/25/11
 240 TN  DP  800.00  1643.55 .00 .00 .00 .00 66  122.18  11/25/11
 240 TN  DP  800.00  1643.55 .00 .00 .00 .00 72  5.27    11/25/11
 240 TN  DP  800.00  1643.55 .00 .00 .00 .00 ZC  1893.87 11/25/11
 240 TN  DP  .00 .00 .00 .00 400.00  .00 66  20.00   12/09/11
 240 TN  DP  800.00  1595.25 .00 80.00   .00 .00 65  46.20   12/09/11
 242 TN  DP  1538.46 .00 .00 .00 .00 .00 65  .00 07/08/11
 242 TN  DP  1538.46 .00 .00 .00 .00 .00 67  .00 07/08/11
 242 TN  DP  1538.46 .00 .00 .00 .00 .00 69  .00 07/08/11
 242 TN  DP  1538.46 .00 .00 .00 .00 .00 72  .00 07/08/11
 242 TN  DP  1538.46 .00 .00 .00 .00 .00 74  .00 07/08/11
 242 TN  DP  1538.46 .00 .00 .00 .00 .00 ZC  1299.03 07/08/11
 242 TN  DP  1538.46 .00 .00 .00 .00 .00 65  181.85  07/22/11
 242 TN  DP  1538.46 .00 .00 .00 .00 .00 67  12.46   07/22/11
 242 TN  DP  1538.46 .00 .00 .00 .00 .00 69  .00 07/22/11
 242 TN  DP  1538.46 .00 .00 .00 .00 .00 72  22.15   07/22/11
 242 TN  DP  1538.46 .00 .00 .00 .00 .00 74  .00 07/22/11
 242 TN  DP  1538.46 .00 .00 .00 .00 .00 ZC  1124.70 07/22/11

したがって、クラスを作成し、必要なデータを取得します。

class Data
{
    public string Data1;
    public string Data2;
    public string Data3;
    public string Data4;
    public string Data5;
}

List<Data> myList = new List<Data>();

//Split lines
foreach(string s in lines)
{
   string[] buffer = s.Split(' '); //split by space

   Data data = new Data();
   data.Data1 = string.Concat(buffer.Take(3).ToArray());
   data.Data2 = string.Concat(buffer.Skip(3).Take(6).ToArray());
   data.Data3 = string.Concat(buffer.Skip(9).Take(1).ToArray());
   data.Data4 = string.Concat(buffer.Skip(10).Take(1).ToArray());
   data.Data5 = string.Concat(buffer.Skip(11).Take().ToArray());

   myList.Add(data);
}
于 2012-06-19T21:06:54.843 に答える