のリストが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を持つ「顧客」ごとに、すべての個別の「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;