1

複雑なデータを含むリストがあります

public class CAR
{    
public int ID {get ; set ; }
public string Name { get ; set ; }
public string EngineType { get ; set ; }
public List<string> Months { get; set; }

}

MonthsデータはList<string>その最大数であることに注意してください150

List<CAR> A = new List<CAR>();
List<CAR> B = new List<CAR>();

A次のデータがあります

 ID  |  Name  | EngineType |  Months[0] | Months[1] |  Months[2] |  Months[3]  .. | Months[149] | 
   1   |  Zen   |  1001      |  1         | 1         |  4         |  5        ..   | 6           |
   2   |  Benz  |  2002      |  6         | 4         |  5         |  6        ..   | 2           |
   3   |  Zen   |  1001      |  3         | 1         |  7         |  5        ..   | 0           |
   4   |  Zen   |  1001      |  2         | 2         |  4         |  5        ..   | 6           |
   5   |  Zen   |  2002      |  2         | 2         |  4         |  5        ..   | 6           |
   6   |  Benz  |  2002      |  1         | 1         |  1         |  1        ..   | 1           |

IFEngineTypeName同じであれば、これらの行を追加し、結果を単一の行に格納します例: 行を追加する

row 1 in B =     1 + 3 + 4
row 2 in B =     2 + 6
row 3 in B =     5

B次の op を含める必要があります

   ID  |  Name  | EngineType |  Months[0] | Months[1] |  Months[2] |  Months[3] ... | Months[149] | 
   -   |  Zen   |  Petrol    |  6         | 4         |  15        |  15       ..   | 12          |
   -   |  Benz  |  Diesel    |  7         | 5         |  6         |  7             | 3           |        
   -   |  Zen   |  Diesel    |  2         | 2         |  4         |  5        ..   | 6           |

月のデータが整数型の別のエンティティであった場合、他の方法でこれを実行できたはずです

B = from val in A 
      group val by  new val.EngineType into g 
          select new CAR{
        EngineType = g.Key, 
        Name = g.Name,
                Month0 = g.Sum(p => p.Month0),
                Month1 = g.Sum(p => p.Month1),
                Month2 = g.Sum(p => p.Month2),
            .
        .
        .
        .
        .
        .
                Month148 = g.Sum(p => p.Month148),
                Month149 = g.Sum(p => p.Month149)
}.ToList<CAR>();

しかし、そのタイプなのでList<string>、これを行う方法はありますか? どうもありがとう!

4

2 に答える 2

0
        foreach (CAR c in A)
        {
            bool blnadded = false;
            if (B.Count == 0)
            {
                B.Add(c);
                blnadded = true;
            }
            else
                foreach (CAR d in B)
                {
                    if (d.Name == c.Name && d.EngineType == c.EngineType)
                    {
                        for (int i = 0; i < d.Months.Count; i++)
                            d.Months[i] = (Convert.ToInt32(d.Months[i]) + Convert.ToInt32(c.Months[i])).ToString();
                        blnadded = true;
                    }
                }
            if (blnadded==false)
                B.Add(c);
        }
于 2013-07-23T17:55:24.277 に答える