LinqDataSource - 你能限制返回的记录数量吗?

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控件是否可以这样吗?

[更新]

我将使用LinqDataSourceListView控制,不是一个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)


lom*_*axx 2

我知道,如果您将分页转发器或 gridview 与 linqdatasource 一起使用,它会自动优化返回的结果数量,但我也很确定在数据源向导中您可以转到高级选项并将其限制为

SELECT TOP 3 FROM 
Run Code Online (Sandbox Code Playgroud)

这应该可以让你做你需要做的事情