C# 如何为LINQ结果表设置别名?

C# 如何为LINQ结果表设置别名?,c#,linq,dynamic-data,C#,Linq,Dynamic Data,我正在尝试为LINQ结果表别名,但没有找到任何方法 具体来说,我使用带有CustomExpression和DynamicData的QueryXtender来过滤EntityDataSource。在我按其中一列排序之前,这是有效的,因为我得到了一个错误,即找不到表“it”。 我知道这是dynamicata封装所有内容的表别名 protected void FilterBasedOnDateRange(object sender, CustomExpressionEventArgs e) {

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

具体来说,我使用带有CustomExpression和DynamicData的QueryXtender来过滤EntityDataSource。在我按其中一列排序之前,这是有效的,因为我得到了一个错误,即找不到表“it”。 我知道这是dynamicata封装所有内容的表别名

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> 
protectedvoid FilterBasedOnDateRange(对象发送方,CustomExpressionEventArgs e)
{
if(filterFromDate.SelectedDate!=null&&filterToDate.SelectedDate!=null)
e、 Query=(来自e.Query.Cast()中的p)
其中p.CalendarDate>=filterFromDate.SelectedDate&&p.CalendarDate错误为“PageRequestManagerServerErrorException:未为类型定义实例属性“it”

我找到了解决办法

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


SortExpression可能包含多个字段标准,我的方法是:
s.Substring(3)。替换(“,it.”,“,”);
。另外,有人有一个更优雅的解决方案,这只是一个肮脏的解决方法。
string s=e.SelectArguments.SortExpression; 
if(s.StartsWith("it.")) 
  e.SelectArguments.SortExpression = s.Substring(3);