如何将OrderBy应用于Linq查询以获取选择列表

tin*_*han 3 linq asp.net-mvc entity-framework razor

我一定错过了一些明显的东西.此查询中的orderby cluase对我的选择列表中显示的项目的顺序没有影响...

List<String> reps = (from r in db.bookings
                     where !r.bookingRep1.Contains("*") && !r.bookingRep1.Contains(" ")
                     orderby r.bookingRep1
                     select r.bookingRep1).Distinct().ToList();

ViewBag.rep1 = new SelectList(reps, booking.bookingRep1);
Run Code Online (Sandbox Code Playgroud)

选择清单......

@Html.DropDownListFor(model => model.bookings.bookingRep1, (SelectList)ViewBag.rep1, "")
Run Code Online (Sandbox Code Playgroud)

我希望selectrep1按字母顺序排序选择列表

Ser*_*kiy 5

申请申请Distinct:

List<string> reps = 
   (from r in db.bookings 
    where !r.bookingRep1.Contains("*") && !r.bookingRep1.Contains(" ") 
    select r.bookingRep1).Distinct().OrderBy(rep => rep).ToList();

ViewBag.rep1 = new SelectList(reps, booking.bookingRep1);
Run Code Online (Sandbox Code Playgroud)

当您应用于Distinct有序查询,然后从生成的SQL中删除刚刚排序:

SELECT
    [Distinct1].[bookingRep1] AS [bookingRep1]
    FROM ( SELECT DISTINCT
        [Extent1].[bookingRep1] AS [bookingRep1]
        FROM [dbo].[bookings] AS [Extent1]
        WHERE [Extent1].[bookingRep1] NOT LIKE @p1 AND 
              [Extent1].[bookingRep1] NOT LIKE @p2
    )  AS [Distinct1]
Run Code Online (Sandbox Code Playgroud)

Distinct在生成SQL 之后,在它之后应用排序时:

SELECT
    [Distinct1].[bookingRep1] AS [bookingRep1]
    FROM ( SELECT DISTINCT
        [Extent1].[bookingRep1] AS [bookingRep1]
        FROM [dbo].[bookings] AS [Extent1]
        WHERE [Extent1].[bookingRep1] NOT LIKE @p1 AND 
              [Extent1].[bookingRep1] NOT LIKE @p2
    )  AS [Distinct1]
    ORDER BY [Distinct1].[bookingRep1] ASC
Run Code Online (Sandbox Code Playgroud)