我有一个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;}
}
我需要列出每个“客户”的所有不同的“销售ID”,这些“客户”在今年有金额> 0。目前,我正在按客户分组,但是因为我的数据集中可以为同一客户和销售ID具有多个“金额”,所以我没有得到期望的结果。我的结果显示:
1. 客户1 用户1 $100 2. 客户1 用户1 $200 3. 客户1 用户1 $300 4. 客户1 用户2 $100 5. 客户1 用户2 $200
但是我想要的是:
1. 客户1 用户1 $600 2. 客户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;