Pergunta

Eu tenho um portal de notícias.

Para este portal Eu tenho um banco de dados com uma tabela "News" e com as seguintes colunas (Newsid, CategoryID, NewsTitle, NewsText, DateAdded, ImagePath, TotalRead, NewsType, isActive)

Eu uso conjunto de dados arquivos (.xsd) e para este, eu tenho uma consulta que notícias retorna o último 3 dias em uma classe personalizada que eu codificado, HHNews nomeados.

HHNews classe tem uma função que retorna um fortemente tipado tabela de dados que inclui os resultados da consulta menciono acima.

A página inicial tem seções diferentes para notícias .. estes são; - Em destaque (5 itens) - Sub-rubricas (4 itens) - Últimos 5 notícias para cada uma das categorias de notícias ... (categorias são como; esportes, notícias locais, economia,

Para a home page, eu recuperar a tabela de dados retornados da classe. Agora eu quero consultar esta tabela de dados e construir as seções menciono acima .. por exemplo.

Se a minha tabela de dados é chamado de "dt", então há uma maneira de tipo SQL consulta esta dt como "selecionar TOP (5) newsid, NewsTitle, NewsText de dt onde NewsType = 0" - 0 representando a manchete?

Foi útil?

Solução

Absolutamente. Você pode uso LINQ como Dave Cluderay mencionado. Para recuperar sua manchete, por exemplo, você pode executar:

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

Outras dicas

Você pode usar LINQ to DataSet se você estiver em NET 3.5.

Se você não está no .NET 3.5, você pode criar um DataView com base no objeto DataTable e, em seguida, definir a propriedade RowFilter no DataView. Por exemplo:

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

Você pode então pegar somente os primeiros 5 linhas em sua DataView.

Você pode usar o modo de exibição padrão para filtrar a tabela de dados assim:

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

Não sei como você deseja obter o top 5!?

Se você não está em 3,5 você poderia usar um simples loop for para obter o top 5 linhas depois de ordenar a tabela.

Existe um método Select na tabela de dados, não acho que há uma maneira de limitar a quantidade devolvida. Eu gosto da maneira como LINQ, mas apenas uma alternativa .... mas o limite pode contar isso.

dt.Select("NewsType = 0");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top