2012-01-20 8 views
8

to jest mój kod ... ale potrzebuję tylko wybierz kolumnę, aby wyświetlić w moim Datagridview. I Need kod, aby wybrać tylko niektóre kolumny .. PrzykładIQueryable C# Wybierz

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(); 

} 

Odpowiedz

10

Jeśli chcesz tylko ograniczoną liczbę kolumn i zamierzają przekazać wynik z metody, najpierw zadeklarować typ konkretne opisanie elementów .

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

Następnie można użyć tego typu w dwie strony dla metody

public List<UsuarioData> Get(...) 

I wreszcie, należy wpisać wybierz.

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

return consulta.ToList(); 

I, oczywiście, twoi rozmówcy należy spodziewać się tego w wyniku (lub po prostu użyć typu wnioskowanie z var).

+0

próbuję ten kod, ale select mi pokazać wszystkie pola w DataGridView. http://img59.imageshack.us/img59/9585/aaaabw.jpg i wybieram tylko dwa pola .. przepraszam za mój zły angielski! – MrZerocaL

1

Dobrze istnieje kilka sposobów można to zrobić, najprostszy sposób:

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

Alternatywnie można utworzyć klasę i zastąpić nowym {} dla klasy i zrobić to na poziomie warstwy danych.

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

Spróbuj tego:

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