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 'ObjectQuery
1' 型のクエリが返された QueryCreated イベントが必要です。
私は何かが欠けています、啓発してください。