Pergunta

Eu estou tentando executar uma consulta LINQ simples na propriedade colunas de uma DataTable:

from c in myDataTable.Columns.AsQueryable()
    select c.ColumnName

No entanto, o que eu recebo é o seguinte:

Não foi possível encontrar uma implementação do padrão de consulta para o tipo de fonte 'System.Linq.IQueryable'. 'Select' não foi encontrado. Considere especificar explicitamente o tipo da variável gama 'c'.

Como posso obter o DataColumnCollection para jogar bonito com o LINQ?

Foi útil?

Solução

Como sobre: ??

var x = from c in dt.Columns.Cast<DataColumn>()
        select c.ColumnName;

Outras dicas

Você também pode usar:

var x = from DataColumn c in myDataTable.Columns
        select c.ColumnName

Ele vai efetivamente fazer o mesmo que o código do Dave: "em uma expressão de consulta, uma variável de iteração explicitamente digitado traduz a uma invocação de Elenco (IEnumerable)", de acordo com o Enumerable.Cast<TResult> Method artigo MSDN.

Com Linq Método Sintaxe:

var x = myDataTable.Columns.Cast<DataColumn>().Select(c => c.ColumnName);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top