2009-10-09 16 views
8

mi código es:Pregunta simple de Linq: ¿Cómo seleccionar más de una columna?

  List<Benutzer> users = (from a in dc.Benutzer 
            select a).ToList(); 

necesito este código, sino que sólo quieren para seleccionar 3 de las 20 columnas en el "Benutzer" -Tabla. ¿Cuál es la sintaxis para eso?

+1

Tiene el tipo 'Benutzer'? ¿Alguna vez ha considerado usar C# localizado? 'Liste benutzer = (aus a in dc.Benutzer wähle a) .ZuListe();';) –

Respuesta

20

Aquí es una expresión de consulta:

var users = (from a in dc.Benutzer 
      select new { a.Name, a.Age, a.Occupation }).ToList(); 

O en notación de puntos:

var users = dc.Benutzer.Select(a => new { a.Name, a.Age, a.Occupation }) 
         .ToList(); 

Tenga en cuenta que esto devuelve una lista de un anonymous type en lugar de casos de Benutzer. Personalmente, prefiero este enfoque sobre la creación de una lista de instancias parcialmente pobladas, ya que cualquier persona que se ocupe de las instancias parciales debe verificar si provienen para averiguar qué habrá realmente allí.

EDIT: Si realmente quiere construir instancias de Benutzer, y LINQ es no dejar que lo haga de una consulta (no estoy seguro de por qué) siempre se puede hacer:

List<Benutzer> users = dc.Benutzer 
    .Select(a => new { a.Name, a.Age, a.Occupation }) 
    .AsEnumerable() // Forces the rest of the query to execute locally 
    .Select(x => new Benutzer { Name = x.Name, Age = x.Age, 
           Occupation = x.Occupation }) 
    .ToList(); 

es decir, el uso el tipo anónimo solo como DTO. Sin embargo, tenga en cuenta que los objetos Benutzer devueltos no se asociarán con un contexto.

+1

¿Cómo puedo tipisite? – Kovu

+2

¿Qué quieres decir con "typisite"? –

+1

Quiero que el tipo sea Benutzer, no anónimo. – Kovu

4
List<Benutzer> users = (from a in dc.Benutzer 
          select new Benutzer{ 
          myCol= a.myCol, 
          myCol2 = a.myCol2 
          }).ToList(); 

Creo que eso es lo que quieres si quieres hacer el mismo tipo de lista. Pero eso supone que las propiedades que está configurando tienen establecedores públicos.

+1

Aparece un error, que no puedo usar "Benutzer" allí. – Kovu

+1

Necesita una coma para separar los campos, aunque dudo que sea por eso que está rompiendo – qui

+1

. Lo probé en mi máquina con un caso de uso muy similar y funcionó. ¿Puedes pegar el error exacto? – qui

1

intento:

var list = (from a in dc.Benutzer select new {a.Col1, a.Col2, a.Col3}).ToList(); 

pero ahora tienen lista de objeto anónimo no de objetos BENUTZER.

Cuestiones relacionadas