売り上げのリストがあります。
また、財務マイルストーンの10進数のリストもあります。たとえば、100ドル、250ドル、500ドルなどです。
製品がこれらのマイルストーンに到達する時点を見つけようとしています。以下で私がやろうとしているのは、すでに取得したproductSalesのリストを使用できる構造にすることです(実際のクエリは通貨換算などを実行します。この質問を単純にしようとしています)。したがって、マイルストーンごとに、これをこのBusinessPlanningElementリストに変換し、DateSoldでグループ化します。
次に、DateSoldで並べ替えます。これは、10進数のマイルストーン変数以上の最初の要素を取得するという考え方です。その後、日付を取得し、DateSoldと製品がシステムに送信された日付の違いを見つけます。
foreach (decimal milestone in milestones)
{
List<BusinessPlanningElement> MileStoneSales = (from sale in productSales
group sale by sale.DateSold into ds
select new BusinessPlanningElements
{
DateSold = ds.Key,
TotalSales = ds.Sum(it => it.TotalProductCut.HasValue ? it.TotalProductCut.Value : 0),
}).OrderBy(s => s.DateSold).ToList();
BusinessPlanningElement bpe = MileStoneSales.Where(mss => mss.TotalSales >= milestone)
.FirstOrDefault();
if (bpe != null)
{
DateTime DateReached = bpe.DateSold;
TimeSpan ts = DateReached - product.DateTimeSubmitted.Value;
int NumberOfDays = ts.Days;
//Output NumberOfDays
}
else
{
//Do Something Else
}
}
デバッグすると、リストが表示され、このクエリから取得する必要のあるリスト内のアイテムが表示されます。
BusinessPlanningElement bpe = MileStoneSales.Where(mss => mss.TotalSales >= milestone)
.FirstOrDefault();
ただし、それを無視しているようで、null値を返します。
TotalSalesが10進数のマイルストーン以上であるリストの最初の要素を取得するために、クエリを構造化する方法を知っている人はいますか?