2011-07-15 18 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 '?你得到的行为是什么,预期的行为是什么?如果您遇到异常,请发送异常消息和行号。你能否提供一个*完整的*,**工作**代码样本来证明你遇到的问题? – mellamokb

回答

2

你很难完成什么。这里有一些问题,你的代码,因为它代表现在,将需要解决的问题:

  1. Budget不包含UsdActualRetail定义。
  2. List<BudgetAndActualLineInfoBySeasonDto>不能铸造到List<Budget>
  3. group对象不能隐式转换为BudgetAndActualLineInfoBySeasonDto
  4. 我已经修复了BUDGET,concattoList的拼写错误。
  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

嗨,谢谢你的回复,是的,我在属性上有些错误,但我会解释主要的想法。我有多个预算列表,我想按季节分组,比按类型产品CD – user847236

+0

嗨,感谢您的回复,是的,我在属性中有些错误,但我会解释主要想法。我有多个预算清单,我想按季节分组,首先按照产品类型进行分组,然后制作共享相同UsdActualRetail元素的USDActual零售总额。我希望新的列表,因此我可以管理它在报告中显示它,没有BudgetAndActualLineInfoBySeasonDto它只是预算(我的dto)和UsdBudgetRetail是UsdActualRetail – user847236