Domanda

Ho un portale di notizie.

Per questo portale ho un database con un " Notizie " tabella e con le seguenti colonne (NewsID, CategoryID, NewsTitle, NewsText, DateAdded, ImagePath, TotalRead, NewsType, isActive)

Uso i file del set di dati (.xsd) e per questo ho una query che restituisce le notizie degli ultimi 3 giorni in una classe personalizzata che ho codificato, chiamata HHNews.

La classe HHNews ha una funzione che restituisce un datatable fortemente tipizzato che include i risultati della query di cui sopra.

La home page ha diverse sezioni per le notizie .. queste sono; - Titoli (5 articoli) - Sottotitoli (4 articoli) - Ultime 5 notizie per ciascuna delle categorie di notizie ... (le categorie sono simili: sport, notizie locali, economia,

Per la home page, recupero il datatable restituito dalla classe. Ora voglio interrogare questo datatable e costruire le sezioni che menziono sopra ... ad esempio

se il mio datatable si chiama " dt " ;, allora c'è un modo per interrogare in modo sql questo dt come " selezionare TOP (5) NewsID, NewsTitle, NewsText da dt dove NewsType = 0 " - 0 rappresenta il titolo?

È stato utile?

Soluzione

Assolutamente. Puoi utilizzare LINQ come menzionato da Dave Cluderay. Per recuperare i titoli, ad esempio, è possibile eseguire:

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

Altri suggerimenti

Puoi usare LINQ to DataSet se ti trovi .NET 3.5.

Se non si è in .NET 3.5, è possibile creare un DataView basato sull'oggetto DataTable e quindi impostare la proprietà RowFilter su DataView. Ad esempio:

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

È quindi possibile catturare solo le prime 5 righe in DataView.

È possibile utilizzare la vista predefinita per filtrare il datatable in questo modo:

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

Non sono sicuro di come otterresti i primi 5 !?

Se non sei in 3.5 potresti usare un semplice ciclo per ottenere le prime 5 righe dopo aver ordinato la tabella.

Esiste un metodo Select sul Datatable, non pensare che ci sia un modo per limitare l'importo restituito. Mi piace il modo LINQ, ma solo un'alternativa .... ma il limite potrebbe contarlo.

dt.Select("NewsType = 0");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top