IQueryable C#选择

时间:2012-01-20 04:39:43

标签: c# select iqueryable

这是我的代码......但我需要只选择列才能在我的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 个答案:

答案 0 :(得分:11)

如果您只想要有限数量的列并且打算将结果传递给方法,请首先声明一个具体类型来描述元素。

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 :(得分:1)

有几种方法可以做到这一点,这是最简单的方法:

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

或者你可以创建一个类并用新的{}代替类,并在数据层级别进行。

答案 2 :(得分: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);

答案 3 :(得分:1)

试试这个:

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