2013-04-23 2 views
2

Я использую EntityDataSource вместе с RadGrid. У меня есть проблемы с объединением EntityDataSource «OrderBy» вместе с выражением «Select Top».EntityDataSource OrderBy конфликт

<asp:EntityDataSource runat="server" 
         ID="EntityDataSourceAlarm" 
         ConnectionString="name=AlarmEntities" 
         DefaultContainerName="AlarmEntities" 
         EnableFlattening="False" 
         EntitySetName="Alarms" 
         OrderBy="it.Status ASC, it.TS DESC" 
         Select="top(10) it.[OID], it.[TS], it.[Status]"> 
</asp:EntityDataSource> 

Я хочу заказ пункта для применения перед тем избранного п. Все это работает, если оставить часть «top(10)» в предложении select. Сначала он должен сортироваться по [Status], а затем [TS]. Затем, используя вершину в инструкции select, кажется, что она отбрасывает предложение order by.

Я использую .Net 4.5 и EntityFramework 5.

+0

Не выбирает ли он 10 лучших, а затем выполняет порядок? – Xharze

+0

Да, но я хочу, чтобы это делалось наоборот. Закажите сначала, а затем выберите топ 10. Как стандартный запрос выбора в T-SQL делает ... – ElToro

+0

Sooo Я предполагаю, что невозможно применить OrderBy до Select Top (n), затем ... :-( – ElToro

ответ

1

Вот решение, я был скептиком о спектаклях, но он отлично работает:

<asp:EntityDataSource 
ID="edsHighUsage" 
runat="server" 
ConnectionString="name=DbEntities" 
DefaultContainerName="DbEntities" 
EnableFlattening="False" 
EntitySetName="HighUsages" 
OnSelecting="edsHighUsage_Selecting" 
OrderBy="it.MonthlyCost desc" 
Select="it.[PhoneNumber], it.[MonthlyCost]"> 
</asp:EntityDataSource> 

Code-за:

protected void edsHighUsage_Selecting(object sender, EntityDataSourceSelectingEventArgs e) 
{ 
    e.SelectArguments.MaximumRows = 100; 
} 
Смежные вопросы