我想在页面上使用LinqDataSource控件并限制返回的记录数量。 我知道如果我使用代码,我可以做这样的事情:

IEnumerable<int> values = Enumerable.Range(0, 10);
IEnumerable<int> take3 = values.Take(3);

有没有人知道LinqDataSource控件是否可以使用这样的东西?

[更新]

我将使用LinqDataSourceListView控件, 而不是 GridView或Repeater。 LinqDataSource向导不提供限制返回记录数的功能。 “高级”选项仅允许您启用删除,插入和更新。

===============>>#1 票数: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);
}

===============>>#2 票数:13

,您不能限制LinqDataSource控件中的结果。 因为Linq使用延迟执行,所以期望表示控件将执行记录集限制。

是的 ,您可以使用ListView控件执行此操作。 诀窍是在LayoutTemplate中使用DataPager控件,如下所示:

<LayoutTemplate>
  <div id="itemPlaceholder" runat="server" />
  <asp:DataPager ID="DataPager1" runat="server" PageSize="3">
  </asp:DataPager>            
</LayoutTemplate>

通常,您将在DataPager中包含控件,如first,last,next和previous。 但如果你把它弄空,那么你只会看到你想要的三个结果。

希望这可以帮助。

===============>>#3 票数:5

protected void DocsData_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
    e.Arguments.MaximumRows = 5;
}

===============>>#4 票数:4

你可以把事件选择LinqDataSource:

protected void ldsLastEntries_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
    e.Arguments.MaximumRows = 10;
}

===============>>#5 票数:4

您可以将Linq查询基于存储过程,该过程仅使用TOP语句返回x行数。 请记住,因为您可以在Linq中执行所有数据库代码并不意味着您应该这样做。 另外,你可以告诉Linq使用与普通表相同的返回类型作为普通表,所以你的所有绑定仍然可以工作,并且返回结果将是相同的类型

===============>>#6 票数:2

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

SELECT TOP 3 FROM 

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

  ask by Otto translate from so

未解决问题?本站智能推荐: