LINQ to Entitiesに次の問題があります。私はDBからレコードを選択し、それらをグループ化して、IDの降順でレコードを注文しています。最初の項目を選択したいのですが、Quantityが!= 0の場合のみです。私はFirstOrDefaultを使用しなければならないので、間違った結果を得ていますが、それを修正する方法がわかりません。LINQ to Entities GroupBy、OrderByDescending、FirstOrDefault
DBは今、このクエリは、IDの2及びグループ化された1と "グループ化" 4私に与えます。私が必要とするのは、Quantityが!= 0で、それを取得する方法がわからない場合に限り、FIRST項目を選択することです。
data = DbContext.Items.Where(x.WarehouseId == 1)
.GroupBy(x => x.ItemCode, (key, g) => g.OrderByDescending(y => y.Id).FirstOrDefault())
.OrderBy(parameters.SortExpression)
.Skip(parameters.Start)
.Take(parameters.Length);
WarehouseIDが1の場合は、IDが4の行のみを取得する必要があります。どんな助けもありがとうございます。
編集:まず、私はgroupBy ItemCodeにする必要があります、私は上記のケースの2つのグループを持っています。第1グループは1と2、第2グループは4です。それから、私はそれらを降順で降順で注文し、(2、1)、(4)を得る。グループから最初に選択する必要がありますが、Quantityが!= 0の場合にのみ選択します。Quantityがゼロの場合、グループから何も選択したくありません。
私が必要とするものを明確にするためのイメージ。私は、最後のステップにこだわっている量は= 0
まず私はGROUPBY ItemCodeに必要、私は上記の私の場合の2つのグループを持っています。第1グループは1と2、第2グループは4です。それから、私はそれらを降順で降順で注文し、(2、1)、(4)を得る。それから、最初に選択する必要がありますが、Quantityが!= 0の場合のみです。Quantityがゼロの場合、グループから何も選択したくありません。 –
2番目と4番目の場合はID 1と4しか得られません。2は数量0で無視されますので、最後に4を残してください。 –