-6

LINQ- order by 句を使用して昇順に並べ替え、データベースで使用可能なすべての状態を取得しましたが、機能していません。これはコードです:

 public List<State> GetAllStates()
    {
        List<State> p;
        p = (from a in _db.ProductImageMaps
             where a.State != "" && a.State != null
             select new State
             {
                 Name = a.State
             }).OrderBy(a=>a.Name).Distinct().ToList();
        return p;

    }
4

1 に答える 1

2

設計による Disitnctは、ソース内の一意のアイテムの順不同のシーケンスを返します。

したがって、 order by 句の後に Distinct を呼び出すと、後のシーケンスが失われます。第 2 に、Distinct の後に OrderBy を呼び出すことは、Distinct レコードのみを注文する方が効率的であるため、より理にかなっています。

このようにしてください

public List<State> GetAllStates()
    {
        List<State> p;
        p = (from a in _db.ProductImageMaps
             where a.State != "" && a.State != null
             select new State
             {
                 Name = a.State
             }).Distinct().OrderBy(a=>a.Name).ToList();
        return p;

    }
于 2013-10-21T11:17:47.510 に答える