【问题标题】:IQueryable C# Select可查询的 C# 选择
【发布时间】:2012-02-14 17:54:48
【问题描述】:

这是我的代码...但我只需要选择列来显示在我的 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();

}

【问题讨论】:

    标签: c# select iqueryable


    【解决方案1】:

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

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

    然后你可以在方法的返回类型中使用 this

    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 的类型推断)。

    【讨论】:

    【解决方案2】:

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

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

    或者,您可以创建一个类并将新的 {} 替换为该类,并在数据层级别执行此操作。

    【讨论】:

      【解决方案3】:
       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);
      

      【讨论】:

        【解决方案4】:

        试试这个:

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

        【讨论】:

          猜你喜欢
          • 2016-08-28
          • 1970-01-01
          • 2020-10-22
          • 2021-12-07
          • 1970-01-01
          • 2012-11-03
          • 2021-11-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多