Pregunta

Tengo un portal de noticias.

Para este portal tengo una base de datos con un " Noticias " Mesa y con las siguientes columnas. (NewsID, CategoryID, NewsTitle, NewsText, DateAdded, ImagePath, TotalRead, NewsType, isActive)

Uso archivos de conjuntos de datos (.xsd) y para este, tengo una consulta que devuelve las noticias de los últimos 3 días a una clase personalizada que he codificado, llamada HHNews.

La clase HHNews tiene una función que devuelve una base de datos de tipo fuerte que incluye los resultados de la consulta que mencioné anteriormente.

La página de inicio tiene diferentes secciones para las noticias ... estas son; - Titulares (5 artículos) - Sub-encabezamientos (4 artículos) - Últimas 5 noticias para cada una de las categorías de noticias ... (las categorías son: deportes, noticias locales, economía,

Para la página de inicio, recupero los datos devueltos de la clase. Ahora quiero consultar esta tabla de datos y compilar las secciones que menciono anteriormente ... por ejemplo,

si mi datatable se llama " dt " ;, entonces hay una manera de hacer una consulta similar a sql, por ejemplo, " seleccione TOP (5) NewsID, NewsTitle, NewsText desde dt donde NewsType = 0 " - ¿0 representa el titular?

¿Fue útil?

Solución

Absolutamente. Puede usar LINQ como mencionó Dave Cluderay. Para recuperar sus titulares, por ejemplo, podría ejecutar:

var myDataTable = dt.AsEnumerable();
var headlines = myDataTable.Where(t => t.NewsID == 0).Take(5);

Otros consejos

Puede usar LINQ to DataSet si está en .NET 3.5.

Si no está en .NET 3.5, puede crear un DataView basado en el objeto DataTable y luego establecer la propiedad RowFilter en el DataView. Por ejemplo:

DataView myDV = new DataView(dt);
myDV.RowFilter = "NewsType = 0";

Luego puedes capturar solo las primeras 5 filas en tu DataView.

Puede usar la vista por defecto para filtrar los datos de manera que:

dt.DefaultView.RowFilter = " NewsType = 0 " ;;

¿No estás seguro de cómo obtendrías los 5 mejores ?!

Si no estás en la versión 3.5, puedes usar un bucle simple para obtener las 5 primeras filas después de ordenar la tabla.

Hay un método de Selección en el Datatable, no creas que hay una manera de limitar la cantidad devuelta. Me gusta la forma LINQ, pero solo una alternativa ... pero el límite podría tenerlo en cuenta.

dt.Select("NewsType = 0");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top