0

重複の可能性:
DISTINCT()およびORDERBYの問題

listOrders.DataSource = (from sp in dbdata.Specifications.Where(i => i.Approve == "Yes" && i.Awailable_BOM == "Yes")
                                     join ord in dbdata.Orders on sp.O_id equals ord.O_id
                                     join prd in dbdata.Products.Where(k => k.Hours_prd == null) on ord.O_id equals prd.O_ID
                                     orderby ord.Special, sp.Due_date
                                     select ord.O_id).Distinct();

「ord.Special、sp.Due_date」で注文しようとしていますが、「Distinct();」を入れても動作しません。では、「ord.Special、sp.Due_date」で並べ替えて、個別の値を取得するにはどうすればよいですか。

4

1 に答える 1

0

これにより、順序付けられたIDが返されると思います。

listOrders.DataSource = 
   from sp in dbdata.Specifications.Where(i => i.Approve == "Yes" && i.Awailable_BOM == "Yes")
   join ord in dbdata.Orders on sp.O_id equals ord.O_id
   join prd in dbdata.Products.Where(k => k.Hours_prd == null) on ord.O_id equals prd.O_ID
   select new { ord.Special, sp.Due_date, ord.O_id } into x
   group x by x.O_id into g
   select new { g.Key, X = g.OrderBy(i => i.Special).ThenBy(i => i.Due_date).First()) } into y
   orderby y.X.Special, y.X.Due_date
   select y.Key;

コメント:

  • 興味のあるフィールドのみを選択してくださいx
  • 区別したいフィールドごとにこれらのフィールドをグループ化するg
  • 各グループからキー(ord.O_id)とグループアイテムを選択しますX。これにより、結果のIDの順序が定義されます(この場合First、idの出現が返されます)。
  • 注文結果X
  • 選択Keyord.O_id
于 2012-11-23T06:56:02.460 に答える