как запросить строго типизированную таблицу данных
-
03-07-2019 - |
Вопрос
У меня есть новостной портал.
Для этого портала у меня есть база данных с таблицей «Новости» и со следующими столбцами (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");