Могу ли я определить порядок сортировки по умолчанию в LinQ - PullRequest
0 голосов
/ 26 марта 2009

Если у меня есть вложенный ListView, и я вызываю связанную таблицу в LinQ, как мне отсортировать ее, не прибегая к событию ItemDataBound родительского элемента?

Псевдокод (ОБНОВЛЕНО РЕШЕНИЕМ):

<asp:ListView ID="lv" runat="server" OnItemDataBound="lv_ItemDataBound" >
   <LayoutTemplate>
      <!-- Product Category Stuff --> 
      <asp:PlaceHolder Id="itemPlaceholder" runat="server"></asp:PlaceHolder>
   </LayoutTemplate>

   <ItemTemplate>
      <asp:ListView ID="lvInner" runat="server" DataSource='<%# <%# ((Category)Container.DataItem).Products.OrderBy(p => p.Description) %> %>'>
         <LayoutTemplate>
            <ul>
               <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
            </ul>
         </LayoutTemplate>
         <ItemTemplate>
            <li>Item Stuff</li>
         </ItemTemplate>
      </asp:ListView>
   </ItemTemplate>
</asp:ListView>

Возможно, метод обманчиво прост, но я хочу, чтобы внутренние Продукты сортировались по полю. Я не вижу способа сделать это декларативно, поскольку LinQ создает этот запрос на лету, если я не ошибаюсь и не выполняет сортировку.

Есть мысли?

UPDATE

Обновлен пример до следующего:

<%# ((Category)Container.DataItem).Products.OrderBy(p => p.Description) %>

Надеюсь, это поможет кому-то еще!

1 Ответ

5 голосов
/ 26 марта 2009

Я предполагаю, что Products является IEnumerable<Product> (или IQueryable). Если это так, то почему бы просто не добавить метод OrderBy к оценке, например так:

<%# Eval("Products.OrderBy(p => p.FieldToSortOn)") %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...