Eu tenho DataTable com duas colunas Author e Bookname .
Quero verificar se o valor de string fornecido Author já existe na DataTable. Existe algum método integrado para verificar isso, como para Arrays array.contains ?
DataRow[] foundAuthors = tbl.Select("Author = '"+ searchAuthor +"'");if(foundAuthors.Length!=0){// do something...}
P: e se não conhecermos os cabeçalhos das colunas e quisermos descobrir se PEPSIexiste algum valor de célula em alguma coluna de rows? Posso fazer um loop de tudo para descobrir, mas existe uma maneira melhor? -
Adicione-os System.Data.DataSetExtensionspara referência e using System.Linq;para usar a classe
5377037
Das duas soluções, qual seria mais rápida?
Paul Alexander
1
@PaulAlexander: não há grande diferença. Mas a DataTable.Selectsintaxe antiga é limitada, enquanto o LINQ pode usar a estrutura .NET completa ou métodos personalizados. Portanto, você deve usar apenas se estiver preso ao .NET 2 DataTable.Select, caso contrário, eu sempre preferiria LINQ
Tim Schmelter
Se você se preocupa com o desempenho e tem grandes conjuntos de dados, tbl.Select()é dramaticamente mais rápido do que as outras abordagens.
HerrimanCoder
@TimSchmelter - Ótimo Tim. Mas se o usuário não souber o nome da coluna, mas ainda quiser obter todas as linhas que correspondem ao valor da pesquisa, como isso pode ser feito?
table.Any(t => t.Author == author);
Respostas:
Você pode usar
LINQ-to-DataSet
comEnumerable.Any
:Outra abordagem é usar
DataTable.Select
:Sim, você pode usar esta consulta:
fonte
System.Data.DataSetExtensions
para referência eusing System.Linq;
para usar a classeDataTable.Select
sintaxe antiga é limitada, enquanto o LINQ pode usar a estrutura .NET completa ou métodos personalizados. Portanto, você deve usar apenas se estiver preso ao .NET 2DataTable.Select
, caso contrário, eu sempre preferiria LINQtbl.Select()
é dramaticamente mais rápido do que as outras abordagens.Você pode usar o Linq. Algo como:
fonte
adicione à sua cláusula using:
e adicione :
às referências.
fonte
Você deve ser capaz de usar o método DataTable.Select () . Você pode nos assim.
A função Select () retorna uma matriz de DataRows para os resultados correspondentes à instrução where.
fonte
você pode definir o banco de dados como IEnumberable e usar linq para verificar se os valores existem. verifique este link
LINQ Query on Datatable para verificar se existe registro
o exemplo dado é
você poderia complementar onde com qualquer
fonte