2012-01-20 11 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で型推論を使用)することを期待すべきです。

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

代わりにクラスを作成し、クラスのために{}新しいを代用し、データ層レベルでそれを行うことができます:

+0


は、私はこのコードが、選択のショー私のDataGridView内のすべてのフィールドを試してみてください。 http://img59.imageshack.us/img59/9585/aaaabw.jpg と私は2つのフィールドしか選択しません。私の悪い英語のために申し訳ありません! – MrZerocaL

1

さて、あなたがこれを行うことができますいくつかの方法、最も簡単な方法があります。

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