Ott*_*tto 34 c# linq database asp.net linq-to-sql
我想LinqDataSource
在页面上使用控件并限制返回的记录数量.我知道如果我使用代码,我可以做这样的事情:
IEnumerable<int> values = Enumerable.Range(0, 10);
IEnumerable<int> take3 = values.Take(3);
Run Code Online (Sandbox Code Playgroud)
有人知道LinqDataSource
控件是否可以这样吗?
[更新]
我将使用LinqDataSource
与ListView
控制,不是一个GridView或Repeater.该LinqDataSource
向导不提供限制返回记录数的功能."高级"选项仅允许您启用删除,插入和更新.
Oll*_*lie 24
我有同样的问题.我绕过这个方法是在LinqDataSource上使用Selecting事件并手动返回结果.
例如
protected void lnqRecentOrder_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
DataClassesDataContext dx = new DataClassesDataContext();
e.Result = (from o in dx.Orders
where o.CustomerID == Int32.Parse(Request.QueryString["CustomerID"])
select o).Take(5);
}
Run Code Online (Sandbox Code Playgroud)
Por*_*man 13
是和否.
不,您不能限制LinqDataSource控件中的结果.因为Linq使用延迟执行,所以期望表示控件将执行记录集限制.
是的,您可以使用ListView控件执行此操作.诀窍是在LayoutTemplate中使用DataPager控件,如下所示:
<LayoutTemplate>
<div id="itemPlaceholder" runat="server" />
<asp:DataPager ID="DataPager1" runat="server" PageSize="3">
</asp:DataPager>
</LayoutTemplate>
Run Code Online (Sandbox Code Playgroud)
通常,您将在DataPager中包含控件,如first,last,next和previous.但如果你把它弄空,那么你只会看到你想要的三个结果.
希望这可以帮助.
小智 5
protected void DocsData_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
e.Arguments.MaximumRows = 5;
}
Run Code Online (Sandbox Code Playgroud)
我知道,如果您将分页转发器或 gridview 与 linqdatasource 一起使用,它会自动优化返回的结果数量,但我也很确定在数据源向导中您可以转到高级选项并将其限制为
SELECT TOP 3 FROM
Run Code Online (Sandbox Code Playgroud)
这应该可以让你做你需要做的事情