【发布时间】:2012-11-20 21:34:22
【问题描述】:
我有一个ForecastData 列表,它看起来像这样:
public class ForecastData
{
public string SalesID {get;set;}
public string Customer {get;set;}
public string Vendor {get;set;}
public string Division {get;set;}
public int Year {get;set;}
public decimal Amount {get;set;}
}
我需要为金额 > 0 且年份为 THIS YEAR 的每个“客户”显示每个不同“SalesID”的列表。
目前,我按客户进行分组,但因为我的数据集中可以有多个“金额”用于相同的客户和 SalesID,所以我没有得到预期的结果。我的结果显示:
- 客户 1 用户 1 100 美元
- 客户 1 用户 1 200 美元
- 客户 1 用户 1 300 美元
- 客户 1 用户 2 100 美元
- 客户 1 用户 2 200 美元
但我想要的是
- 客户 1 用户 1 美元 600 美元
- 客户 1 用户 2 300 美元
这是我的表达方式:
var forecasts = (List<ForecastData>)cache.Get(_RAW_FORECAST_DATA_KEY, null);
foreach(var custGroup in forecasts.Where(f => f.Year == DateTime.Now.Year).GroupBy(f => f.Customer))
{
if(custGroup.Count() > 1) // There's more than one forecast for this customer
{
foreach(var instance in custGroup)
{
toReturn.Add(new MultipleCustomer(custGroup.Key)
{
Salesperson = instance.SalesPersonId,
Forecast = instance.Amount
});
}
}
}
return toReturn;
【问题讨论】:
-
看看this。
-
你肯定需要对你的 instance.Amount 做一个 Sum。您的分组依据只会对客户对象进行排序