【发布时间】:2017-03-18 02:19:48
【问题描述】:
对于以下代码,我使用 LINQ to SQL 为绑定到 ObjectDataSource 并按“ID”列排序的 GridView 分页数据。
public IQueryable<MYDATATYPE> GetMYDATATYPE(int maximumRows, int startPageIndex, int startRowIndex, string orderByColumnName)
{
// page query
var query = Context.MYDATATYPEs.Skip(startRowIndex).Take(maximumRows);
// ordering by the ID column
query = query.OrderBy(x => x.ID);
return query;
}
是否可以不按 ID 列排序,而是按 orderByColumnName 参数中指定的列名排序?
我想我可以像这样将“orderByColumnName”放在 OrderByFunction 中,
query = query.OrderBy(orderByColumnName);
但它给了我这个错误:
错误 CS0411 方法“Queryable.OrderBy(IQueryable, Expression>)”的类型参数无法从用法中推断出来。尝试明确指定类型参数。
这是使用该函数的 ASP 对象数据源:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetMYDATATYPE" SelectCountMethod="GetMYDATATYPECount"
TypeName="Paging.MyData" EnablePaging="true"
SortParameterName="OrderByColumName">
<SelectParameters>
<asp:Parameter Name="maximumRows" Type="Int32" />
<asp:Parameter Name="startPageIndex" Type="Int32" />
<asp:Parameter Name="startRowIndex" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
【问题讨论】:
标签: c# asp.net linq gridview linq-to-sql