だから、Basket
にはBasketItems
が含まれています。このアイテムのそれぞれはMenuDate
です。今度はOrders
を作成して、条件が次のようになります。すべてOrder
には1週間分のアイテム(ここには月曜日から始まります)が必要です。LINQ - オブジェクトのリストを(DateTimeの昇順で)並べ替えるクエリをサブタイトル
私はすべての日付と毎週月曜日にチェックされる複数のforeach-constructsを作成することができます(真実)でも、これはすべてちょっとハッキリしているようです。最適な、それは私が書いた何とかこのコードのようにLINQ-クエリを持っている、だろうが、これは戻って期待値を与えるものではありません:
startofweekは私の前の月曜日を与え、私が使用extensionmethodあるvar basketItems = currBasket.Items.OrderBy(y => y.MenuDate).ToList();
if (basketItems.Count() > 0)
{
List<List<BasketDay>> listOfItemsPerWeek = basketItems
.GroupBy(p => p.MenuDate >= basketItems.First().MenuDate.StartOfWeek(DayOfWeek.Monday)
&& p.MenuDate < basketItems.First().MenuDate.StartOfWeek(DayOfWeek.Monday).AddDays(7))
.Select(g => g.ToList())
.ToList();
}
を与えられた日時(または月曜日は確かに月曜日)。
には、mondayとsunday(23:59:59)の間にMenuDateがあるcurrBasket.Itemsのすべてのメニューが含まれています。
私はこれまでのことをすべて試しましたが、今はアイデアがなくなり、あなたが私をここで助けてくれることを願っています。
Besteが
編集について:
それを明確にするが、我々はここで食品BRANCHEにいると仮定します。BasketDay
その日のメニューが含まれています。
ここで(ここではそのことは重要ではないため削除年)の例のユースケースがあります: お客様1月に次の日付のためのバスケットにメニューを追加します。
月曜日01.01、 水曜日03.01。 金曜日05.01。
日曜日07.01。 月曜日08.01。 火曜日09.01。
彼のバスケットには6個のアイテムが含まれています。
私が必要としているのは、この1つのリストをBasketDay
個のインスタンスを毎週List<BasketDay>
に分けることです。
上記のLINQクエリは、私にとってこれを行う必要があります。その後、私はこのような別個の注文オブジェクトを作成することができ:(。。01.01 - 07..01)、4つの項目を有するものが含ま
foreach(weekOrder in listOfItemsPerWeek){...}
場所と2つのアイテム(08.01を有する第二および。 09.01。)
希望これはより明確になります。
'BasketDay'はあなたが話している「注文」ですか?あなたが何を望んでいるかははっきりしていません。グループの希望するキーは何ですか? LINQはコードを読みやすくするために役立たないことがあります。 –