Pregunta

Me gustaría usar un LinqDataSource controlar una página y limitar la cantidad de registros devueltos.Sé que si uso el código subyacente podría hacer algo como esto:

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

¿Alguien sabe si algo como esto es posible con un LinqDataSource ¿control?

[Actualizar]

voy a usar el LinqDataSource con el ListView control, no un GridView o un repetidor.El LinqDataSource El asistente no ofrece la posibilidad de limitar el número de registros que se devuelven.Las opciones avanzadas solo le permiten habilitar eliminaciones, inserciones y actualizaciones.

No hay solución correcta

Otros consejos

Tuve el mismo problema.La forma en que solucioné esto fue usar el evento de selección en LinqDataSource y devolver el resultado manualmente.

p.ej.

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);
}

y No.

No, no puede limitar los resultados dentro del control LinqDataSource.Debido a que Linq usa ejecución diferida, la expectativa es que el control de presentación cumpla con los límites del conjunto de registros.

, puedes hacer esto con un control ListView.El truco consiste en utilizar el Buscapersonas de datos control dentro del Plantilla de diseño, al igual que:

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

Normalmente, incluiría controles dentro del DataPager como primero, último, siguiente y anterior.Pero si lo deja vacío, sólo verá los tres resultados que desea.

Espero que esto ayude.

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

Puede basar su consulta de Linq en un proceso almacenado que solo devuelve x número de filas usando una declaración TOP.Recuerde que sólo porque pueda hacer todo su código de base de datos en Linq no significa que deba hacerlo.Además, puede decirle a Linq que use el mismo tipo de devolución para el proceso almacenado que la tabla normal, por lo que todos sus enlaces seguirán funcionando y los resultados devueltos serán del mismo tipo.

Puedes poner evento Selección de LinqDataSource:

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

Sé que si usa un repetidor de paginación o una vista de cuadrícula con linqdatasource, optimizará automáticamente la cantidad de resultados devueltos, pero también estoy bastante seguro de que en el asistente de fuente de datos puede ir a opciones avanzadas y limitarlo a

SELECT TOP 3 FROM 

lo que debería permitirle hacer lo que necesita

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top