как запросить строго тип данных - PullRequest
1 голос
/ 01 мая 2009

У меня новостной портал.

Для этого портала у меня есть база данных с таблицей "Новости" и со следующими столбцами (NewsID, CategoryID, NewsTitle, NewsText, DateAdded, ImagePath, TotalRead, NewsType, isActive)

Я использую файлы набора данных (.xsd), и для этого у меня есть запрос, который возвращает новости за последние 3 дня в пользовательский класс, который я кодировал, с именем HHNews.

В классе HHNews есть функция, которая возвращает данные со строгой типизацией, которые включают результаты запроса, о котором я упоминал выше.

На главной странице есть разные разделы для новостей .. это; - заголовки (5 наименований) - Подзаголовки (4 позиции) - Последние 5 новостей для каждой из категорий новостей ... (категории как; спорт, местные новости, экономика,

Для домашней страницы я получаю данные, возвращаемые из класса. Теперь я хочу сделать запрос к этой таблице данных и построить разделы, о которых я упоминал выше ... например,

если моя таблица данных называется "dt", то есть ли способ выполнить sql-подобный запрос к этой dt, такой как "select TOP (5) NewsID, NewsTitle, NewsText из dt, где NewsType = 0" - 0 представляющий заголовок?

Ответы [ 6 ]

1 голос
/ 01 мая 2009

Абсолютно. Вы можете использовать LINQ , как упоминал Дэйв Клэйдрей. Например, чтобы получить заголовки, вы можете выполнить:

var myDataTable = dt.AsEnumerable();
var headlines = myDataTable.Where(t => t.NewsID == 0).Take(5);
1 голос
/ 01 мая 2009

Если вы не в .NET 3.5, вы можете создать DataView на основе объекта DataTable, а затем установить свойство RowFilter в DataView. Например:

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

Затем вы можете поймать только первые 5 строк в вашем DataView.

1 голос
/ 01 мая 2009

Вы можете использовать LINQ to DataSet , если вы используете .NET 3.5.

0 голосов
/ 01 мая 2009

В Datatable есть метод Select, не думайте, что есть способ ограничить возвращаемую сумму. Мне нравится способ LINQ, но только альтернатива ... но предел может подсчитать это.

dt.Select("NewsType = 0");
0 голосов
/ 01 мая 2009

Если вы не в версии 3.5, вы можете использовать простой цикл for, чтобы получить первые 5 строк после сортировки таблицы.

0 голосов
/ 01 мая 2009

Вы можете использовать представление по умолчанию для фильтрации данных следующим образом:

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

Не уверен, как бы вы получили топ-5!?

...