【问题标题】:How can I alias the LINQ results table?如何为 LINQ 结果表设置别名?
【发布时间】:2011-03-09 16:17:31
【问题描述】:

我正在尝试为 LINQ 结果表设置别名,但没有找到任何方法。

我特别使用 QueryExtender 和 CustomExpression 和 DynamicData 来过滤 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> 

【问题讨论】:

    标签: c# linq dynamic-data


    【解决方案1】:

    错误是“PageRequestManagerServerErrorException:没有为类型定义实例属性“它”

    我在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);
    

    【讨论】:

    • SortExpression 可能包含几个字段条件,我的方法是:s.Substring(3).Replace(", it.", ", ");。此外,有些人有更优雅的解决方案,这只是一种肮脏的解决方法。
    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 2021-12-29
    • 2015-09-28
    • 2019-12-29
    • 1970-01-01
    • 2018-08-15
    相关资源
    最近更新 更多