2013-03-08 21 views
10

Il mio codice è il seguenteSelezionare elementi multipli di fila utilizzando Linq

var users = MyTable.AsEnumerable() 
         .Select(x => new { x.Field<string>("Col1"),x.Field<string> 
         ("Col2")}).ToList(); 

sulla compilazione ottengo

valido anonima dichiaratore membro tipo. I membri di tipo anonimo devono essere dichiarati con un'assegnazione membro, un nome semplice o un accesso membro.

risposta

15

È necessario dare un nome a ciascuno dei campi del tipo anonimo

var users = MyTable.AsEnumerable() 
    .Select(x => 
    new { Col1 = x.Field<string>("Col1"), Col2 = x.Field<string>("Col2")}) 
    .ToList(); 

L'unica volta che il nome di un campo di tipo anonimo può essere omessa è quando l'espressione è di per sé un nome semplice che il compilatore può usare. Ad esempio se l'espressione è un campo o una proprietà, il nome può essere omesso. In questo caso l'espressione è una chiamata di metodo generico e non ha nome il compilatore utilizzerà

+0

può spiegare il motivo per cui per favore? – TalentTuner

+1

@Saurabh ha aggiunto una spiegazione – JaredPar

3

Prova questa:

var users = MyTable.AsEnumerable() 
         .Select(x => new 
         { 
         Col1 = x.Field<string>("Col1"), 
         Col2 = x.Field<string>("Col2")}) 
         .ToList(); 
+0

puoi spiegare perché, per favore? – TalentTuner

2

È possibile utilizzare questo

var users = MyTable.AsEnumerable() 
         .Select(x => new 
         { 
         Col1 = x.Field<string>("Col1"), 
         Col2 = x.Field<string>("Col2")}) 
         .ToList(); 
Problemi correlati