2012-01-20 33 views
8

這是我的代碼...但我需要選擇僅列以顯示在我的Datagridview。 我需要的代碼來選擇如果只想列的數量有限,只有一些列..例如IQueryable C#選擇

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

} 

回答

10

,並打算將結果傳遞出的方法,首先聲明一個具體類型來描述元素。

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)。

+0

我試試這個代碼,但選擇給我看在datagridview的所有領域。 http://img59.imageshack.us/img59/9585/aaaabw.jpg 我只選擇了兩個字段..抱歉我的英文不好! – MrZerocaL

1

那麼有幾個方法可以做到這一點,最簡單的方法:

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

或者你可以創建一個類並替換新的{}爲類,並在數據層的水平做到這一點。

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

試試這個:

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