我想只返回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 'ObjectQuery
1'的查询。
我错过了什么,请指教。
答案 0 :(得分:0)
也许您需要选择属性:
<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>
答案 1 :(得分:0)
您最初在entitydatasource中选择的内容应与创建的查询中相同。