1

我只想从 LINQ 查询中返回一些列。我怎么做?这是asp.net:

    <asp:EntityDataSource ID="RequestorDataEntitySource" runat="server"
        ConnectionString="name=RequestDataEntities" 
        DefaultContainerName="RequestDataEntities" EnableFlattening="False" 
        EntitySetName="requests"
        OnQueryCreated="Requestor_QueryCreated" >
    </asp:EntityDataSource>
    <asp:GridView ID="RequestorGridView" runat="server" 
        DataSourceID="RequestorDataEntitySource">
    </asp:GridView>

以及背后的代码:

protected void Requestor_QueryCreated(object sender, QueryCreatedEventArgs e)
    {

        var currentRequestor = e.Query.Cast<requests>();
        e.Query = (from rq in currentRequestor
                   where rq.lname == "Somebody"
                   select rq);
    }

这用所有 20 列填满了网格,但我可以只选择几个特定的​​列(fname、lname、email)吗?我在这里看到了很多关于这个主题的帖子,但我无法让这些示例对我有用。如果我尝试将选择更改为:

   select new { rq.fname, rq.lname }); 

我收到一个错误:

System.InvalidOperationException:QueryCreated 事件返回了“ObjectQuery 1' when type 'ObjectQuery1”类型的查询是必需的。

我遗漏了一些东西,请赐教。

4

2 回答 2

0

您最初在 entitydatasource 中选择的内容应该与创建的 on-query 中的相同。

于 2014-05-06T10:32:07.130 回答
0

也许Select属性是您需要的:

<asp:EntityDataSource ID="RequestorDataEntitySource" runat="server"
    ConnectionString="name=RequestDataEntities" 
    DefaultContainerName="RequestDataEntities" EnableFlattening="False" 
    EntitySetName="requests"
    Select="it.fname, it.lname"
    OnQueryCreated="Requestor_QueryCreated" >
</asp:EntityDataSource>
于 2012-07-04T01:13:08.927 回答