2016-03-08 37 views
1

我试着通过我从一个LINQ声明采取的寄存器命令之前,我把它们保存在一个列表但林不能够做到这一点的项目继续得到无序LinQ在排序上ViewBag

这是我的LinQ

foreach (var item in db.Pos.OrderByDescending(x => x.Fecha).Select(l => l.Fecha).Distinct()) 
     { 
      dateday = item.ToString("yyyy-MM-dd"); 
      var listItem = new SelectListItem { Value = dateday, Text = dateday }; 
      listItem.Selected = today.Day == item.Day; 
      listdate.Add(listItem); 

     } 
     ViewBag.Fechas = listdate; 

但是,这是我对我的查看输出:

<select id="Fechas" name="Fechas"><option value="2016-03-06">2016-03-06</option> 
 
<option value="2016-03-04">2016-03-04</option> 
 
<option value="2016-03-07">2016-03-07</option> 
 
<option value="2016-03-01">2016-03-01</option> 
 
<option value="2016-03-02">2016-03-02</option> 
 
<option value="2016-03-05">2016-03-05</option> 
 
<option selected="selected" value="2016-03-08">2016-03-08</option> 
 
<option value="2016-03-03">2016-03-03</option> 
 
</select>

这是输出我需要:

<select id="Fechas" name="Fechas"> 
 
<option selected="selected" value="2016-03-08">2016-03-08</option> 
 
    <option value="2016-03-07">2016-03-07</option> 
 
    <option value="2016-03-06">2016-03-06</option> 
 
    <option value="2016-03-05">2016-03-05</option> 
 
    <option value="2016-03-04">2016-03-04</option> 
 
    <option value="2016-03-03">2016-03-03</option> 
 
    <option value="2016-03-02">2016-03-02</option> 
 
    <option value="2016-03-01">2016-03-01</option> 
 

 
</select>

回答

5

Distinct明确指出,返回的结果的顺序是不维护。您需要订购执行Distinct

+0

从SQL数据库中的项目coms如何在使用distinc之前订购? –

+1

@ArturoMartinez在使用'Distinct'之前,您*不能*订购。这就是答案的重点,这样做毫无意义,因为“独特”将重新排列物品。 – Servy