IQueryable C # Select - PullRequest
       4

IQueryable C # Select

9 голосов
/ 20 января 2012

это мой код ... но мне нужно выбрать только столбец для отображения в моем Datagridview. Мне нужен код, чтобы выбрать только некоторые столбцы .. пример

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

}

Ответы [ 4 ]

11 голосов
/ 20 января 2012

Если вам нужно ограниченное количество столбцов и вы хотите передать результат из метода, сначала объявите конкретный тип для описания элементов.

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

Затем вы можете использовать это втип возвращаемого значения для метода

public List<UsuarioData> Get(...) 

И, наконец, используйте тип по вашему выбору.

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

return consulta.ToList();

И, конечно, ваши абоненты должны ожидать, что получат это как результат (или просто используют вывод типа с var).

1 голос
/ 20 января 2012

Попробуйте это:

(contexto.AsEnumerable() 
select new {usu_Login=r.Field<string>("usu_Login")}).ToList();
1 голос
/ 20 января 2012
 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 голос
/ 20 января 2012

Ну, есть несколько способов сделать это, самый простой способ:

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

В качестве альтернативы вы можете создать класс и заменить новый {} на класс и сделать это на уровне уровня данных..

...