0

linqを介して呼び出しているストアドプロシージャ(編集できません)があります。

ストアドプロシージャは値を返します(以下のより複雑ですが重要なデータ):

Customer   Stock Item   Date       Price   Priority  Qty
--------------------------------------------------------
CUST1      TAP         01-04-2012  £30     30        1 - 30
CUST1      TAP         05-04-2012  £33     30        1 - 30
CUST1      TAP         01-04-2012  £29     20        31 - 99
CUST1      TAP         01-04-2012  £28     10        1 - 30

このリストを、LINQで一意の日付と一意の数量を持つ行に制限しようとしています。優先度の高いアイテムを削除して、一意の日付と数量の行を残したいと思います。

group byとを使用していくつかのMaxを試しorder byましたが、結果を得ることができませんでした。

linqを介してこれを行う方法はありますか?

編集:

なんとかbrad-remの答えをVB.netに変換することができました。

誰かがそれを必要とするならば、以下の構文:

returnlist = (From p In returnlist
              Order By p.Qty Ascending, p.Priority
              Group By AllGrp = p.Date, p.Qty Into g = Group
              Select g.First).ToList
4

1 に答える 1

1

次はどうですか。日付と数量でグループ化し、優先度の低いものが最初になるように注文します。次に、各グループから最初のアイテムを選択します。これらはすべて優先度の低いアイテムです。

var result = from d in dbData
orderby d.Priority 
group d by new
{
    d.Date,
    d.Qty
} into group1
select group1.First();
于 2012-05-03T18:17:41.503 に答える