我如何为LINQ结果表添加别名?

时间:2011-03-09 16:17:31

标签: c# linq dynamic-data

我正在尝试为LINQ结果表添加别名,但我找不到任何方法来执行此操作。

特别是我使用带有CustomExpression和DynamicData的QueryExtender来过滤EntityDataSource。这可以工作,直到我按其中一列排序,我得到一个错误,表“它”找不到。 我知道这是DynamicData包装所有内容的表别名。

protected void FilterBasedOnDateRange(object sender, CustomExpressionEventArgs e)
{
    if (filterFromDate.SelectedDate != null && filterToDate.SelectedDate != null)
    e.Query = (from p in e.Query.Cast<CalendarDay>()
                where p.CalendarDate >= filterFromDate.SelectedDate && p.CalendarDate <= filterToDate.SelectedDate
                select p);
}


<asp:Label ID="filterFromDateLabel" runat="server" Text='From Date' Font-Bold="true"  />
    <telerik:RadDatePicker ID="filterFromDate" runat="server" OnSelectedDateChanged="OnSelectedDateChanged" AutoPostBack="true" >
        </telerik:RadDatePicker>
    <asp:Label ID="filterToDateLabel" runat="server" Text='To Date' Font-Bold="true" />
    <telerik:RadDatePicker ID="filterToDate" runat="server" OnSelectedDateChanged="OnSelectedDateChanged" AutoPostBack="true" >
        </telerik:RadDatePicker>
<br /><br />
<asp:QueryExtender ID="qeRange" runat="server" TargetControlID="GridDataSource">
    <asp:CustomExpression OnQuerying="FilterBasedOnDateRange" />
</asp:QueryExtender> 

1 个答案:

答案 0 :(得分:2)

错误是“PageRequestManagerServerErrorException:Instance属性'''没有为类型”

定义

我在http://forums.asp.net/p/1528965/3696540.aspx

上找到了解决方案

“在DynamicData文件夹下的List.aspx页面模板中为实体数据源添加选择事件,并在事件中添加以下代码行。”

string s=e.SelectArguments.SortExpression; 
if(s.StartsWith("it.")) 
  e.SelectArguments.SortExpression = s.Substring(3);