2012-01-20 10 views
8

questo è il mio codice ... ma ho bisogno di selezionare solo la colonna da visualizzare nel mio Datagridview. Ho bisogno del codice per selezionare solo alcune colonne .. esempioIQueryable C# Select

Select{t => t.usu_Login, t => t.usu_Login} 

public List<tb_usuario> Get(FilterDefinition filter) 
{ 

    var contexto = new indNET_Entities(); 

    IQueryable<tb_usuario> Consulta = contexto.tb_usuario.AsQueryable<tb_usuario>() 
                 .Where(t => t.usu_Ativo == 1) 
                 .OrderBy(t => t.usu_Login); 


    return Consulta.ToList(); 

} 

risposta

10

Se si desidera solo un numero limitato di colonne e si intende passare il risultato fuori del metodo, prima dichiarare un tipo concreto per descrivere gli elementi .

public class UsuarioData 
{ 
    public string UsuLogin { get; set; } // or whatever 
    public string UsuName { get; set; } // or whatever 
} 

quindi è possibile utilizzare questo nel tipo restituito per il metodo

public List<UsuarioData> Get(...) 

E, infine, utilizzare il tipo nel vostro prescelto.

var consulta = contexto.tb_usuario.Where(whatever).OrderBy(whatever) 
        .Select(t => new UsuarioData 
           { 
            UsuLogin = t.usu_login, 
            UsuName = t.usu_name 
           } 
          ); 

return consulta.ToList(); 

E, naturalmente, i chiamanti devono aspettarsi di ottenere questo come il risultato (o semplicemente usare l'inferenza dei tipi con var).

+0

provo questo codice, ma il prescelto mi mostra tutti i campi di datagridview. http://img59.imageshack.us/img59/9585/aaaabw.jpg e seleziono solo due campi .. scusa per il mio pessimo inglese! – MrZerocaL

1

Beh c'è un paio di modi si potrebbe fare questo, il modo più semplice:

 grdvwHoldings.DataSource = Model.Holdings 
           .Select(x=> new 
              { Name= x.HoldingName, 
               CustomerName = x.FundCustomerName 
              }).ToList(); 
    grdvwHoldings.DataBind(); 

In alternativa è possibile creare una classe e sostituire il nuovo {} per la classe e lo fa a livello di layer di dati.

1
IQueryable<tb_usuario> Consulta = contexto.tb_usuario.AsQueryable<tb_usuario>() 
                .Where(t => t.usu_Ativo == 1) 
                .OrderBy(t => t.usu_Login) 
                .Select(t => t.ColumnName); 
1

Prova questo:

(contexto.AsEnumerable() 
select new {usu_Login=r.Field<string>("usu_Login")}).ToList();