как запросить строго типизированную таблицу данных

StackOverflow https://stackoverflow.com/questions/811210

Вопрос

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

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

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

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

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

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

dt.Select("NewsType = 0");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top