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: 'ObjectQuery 1' when type 'ObjectQuery1' 型のクエリが返された QueryCreated イベントが必要です。

私は何かが欠けています、啓発してください。

4

2 に答える 2

0

entitydatasource で最初に選択するものは、作成されたオンクエリと同じである必要があります。

于 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 に答える