2011-07-15 15 views
-5
public class Budget 
{ 
    public string SeasonNo { get; set; } 
    public string SeasonName { get; set; } 
    public string typeProductCd { get; set; } 
    public string typeProductDescription { get; set; } 
    public Decimal UsdBudgetRetail { get; set; } 
} 

List<Budget> list1 

List<Budget> list2 

List<Budget> ListUngrouped = 
    list1.Concat(list2).ToList(); 

List<Budget> listGrouped = ListUngrouped 
    .GroupBy(x => new { x.SeasonNo, x.typeProductCd }) 
    .Select(group => new { group.Key, UsdBudgetRetail = group.Sum(x => x.UsdActualRetail) }) 
    .Cast<BudgetAndActualLineInfoBySeasonDto>() 
    .ToList(); 
+3

あなたの質問は何ですか?助けが必要な場合は、必要なものを明確にしたいかもしれません。 – Taryn

+0

'UsdActualRetail'はどこに定義されていますか? 'BudgetAndActualLineInfoBySeasonDto'はどこに定義されていますか? 'list1'と' list2'はどのように設定されていますか? 'List 'を 'List 'にキャストする方法は?あなたが得た行動は何ですか、そして期待された行動は何ですか?例外が発生した場合は、発生した例外メッセージと行番号を掲示してください。あなたは、あなたが持っている問題を示す*完全*、** working **のコードサンプルを提供できますか? – mellamokb

答えて

2

達成しようとしていることは非常に不明です。

  1. BudgetUsdActualRetailの定義が含まれていません:それは今それが対処する必要があります立っているとしてここにあなたのコードを持ついくつかの問題があります。
  2. List<BudgetAndActualLineInfoBySeasonDto>は、List<Budget>にキャストできません。
  3. groupオブジェクトは、暗黙的にBudgetAndActualLineInfoBySeasonDtoにキャストできません。
  4. 私は既にBUDGETconcat、およびtoListのスペルミスを修正しました。
  5. グループ化を機能させるには、GroupByオブジェクトの等価比較のためのカスタム実装を提供する必要があります。

あなたは、このコードが動作すると、他の不足しているクラスの定義が何であるかする方法についての推測を教育を受けた野生の束を作り、ここにある(LinqPad対応)complete working code sampleグループ化された値との合計を示し、

void Main() 
{ 
    List<Budget> list1 = new List<Budget>() { 
     new Budget { SeasonNo = "1", SeasonName = "Test 1", typeProductCd = "3", UsdActualRetail = 1.01m }, 
     new Budget { SeasonNo = "1", SeasonName = "Test 2", typeProductCd = "3", UsdActualRetail = 1.01m }, 
     new Budget { SeasonNo = "1", SeasonName = "Test 3", typeProductCd = "3", UsdActualRetail = 1.01m }, 
     new Budget { SeasonNo = "1", SeasonName = "Test 4", typeProductCd = "3", UsdActualRetail = 1.01m }, 
    }; 

    List<Budget> list2 = new List<Budget>() { 
     new Budget { SeasonNo = "2", SeasonName = "Test 5", typeProductCd = "4", UsdActualRetail = 1.02m }, 
     new Budget { SeasonNo = "2", SeasonName = "Test 6", typeProductCd = "4", UsdActualRetail = 1.02m }, 
     new Budget { SeasonNo = "2", SeasonName = "Test 7", typeProductCd = "4", UsdActualRetail = 1.02m }, 
    }; 

    List<Budget> listUngrouped = list1.Concat(list2).ToList(); 

    List<BudgetAndActualLineInfoBySeasonDto> listGrouped = 
     listUngrouped 
      .GroupBy(x => new SeasonDto { SeasonNo = x.SeasonNo, typeProductCd = x.typeProductCd }) 
      .Select(group => new BudgetAndActualLineInfoBySeasonDto { 
       SeasonDto = group.Key, 
       UsdBudgetRetail = group.Sum(x => x.UsdActualRetail) 
      }) 
      .Cast<BudgetAndActualLineInfoBySeasonDto>() 
      .ToList(); 
    Console.WriteLine(listGrouped); 
} 

// Define other methods and classes here 

public class SeasonDto 
{ 
    public string SeasonNo { get; set; } 
    public string typeProductCd { get; set; } 

    public override bool Equals(object other) 
    { 
     SeasonDto otherS = other as SeasonDto; 
     if (otherS != null) 
     { 
      return this.SeasonNo.Equals(otherS.SeasonNo) && 
       this.typeProductCd.Equals(otherS.typeProductCd); 
     } 
     else 
     { 
      return false; 
     } 
    } 

    public override int GetHashCode() 
    { 
     return SeasonNo.GetHashCode() + typeProductCd.GetHashCode(); 
    } 
} 

public class BudgetAndActualLineInfoBySeasonDto 
{ 
    public SeasonDto SeasonDto { get; set; } 
    public decimal UsdBudgetRetail { get; set; } 
} 

public class Budget 
{ 
     public string SeasonNo { get; set; } 
     public string SeasonName { get; set; } 
     public string typeProductCd { get; set; } 
     public string typeProductDescription { get; set; } 
     public Decimal UsdActualRetail { get; set; } 
} 

これは役立ちます。質問をかなり改善できれば、より良いお手伝いをすることができます。

+0

あなたの返事のためにこんにちは感謝、私は属性のsomemエラーがええ、私は主なアイデアを説明するでしょう。私は予算の複数のリストを持っています、私はあなたの返信のためにこんにちは感謝、私は属性のsomemエラーがありますが、私は主なアイデアを説明するだろう – user847236

+0

私は複数の予算リストを持っていますが、まずtypeProductCDよりもシーズンごとにグループ化し、同じUsdActualRetailを共有しているUSDActual retailの合計を作成します。私は結果として新しいリストを期待しているので、レポートに表示するためにそれを管理することができます。BudgetAndActualLineInfoBySeasonDtoはありません。予算(私のdto)とUsdBudgetRetailはUsdActualRetailです – user847236