2017-04-05 5 views
0

私は、DepartamentComputer(PKはComputerId)という名前のテーブルを介して、1対多の関係を持つSQLデータベースComputer and Departmentに2つのテーブルを持っています。エンティティフレームワークの完全なエンティティではなく、結合されたエンティティプロパティを一覧表示する方法

私はDataGridViewの上、それぞれの部門名を持つすべてのコンピュータを一覧表示しようとしていますが、それはDataGridViewの上の部門に来るとき、それは実際に代わり、このような部署の名前のエンティティを示しています。これらのDataGridView row

一般的なリポジトリからすべてのコンピュータを取得するために必要なメソッドです:

public Task<List<TEntity>> GetAllAsync() 
    { 
     return Context.Set<TEntity>().ToListAsync(); 
    } 

    public async Task<IEnumerable<Computadora>> ListarAsync() 
    { 
     return await _unitOfWork.Computadora.GetAllAsync(); 
    } 

そして、これらはDataGridViewの

private async void ListarComputadoras() 
    { 
     var lista = await ListarAsync(); 
     Popular(lista); 
    } 

    public void Popular(IEnumerable<Computadora> computadoras) 
    { 
     var bs = new BindingSource() {DataSource = computadoras.ToList()}; 
     dgvDatos.DataSource = bs; 
    } 
を移入する方法です

DepartmentのテーブルのNameプロパティを選択し、Entityの名前を表示する代わりにDataGridViewに表示するにはどうすればよいですか?

ありがとうございました!

編集:私は言及するのを忘れました。私は、匿名型の使用を避けたいのです。なぜなら、コンピュータのリストとロジックが壊れる匿名型に依存するロジックが増えているからです。

答えて

0

あなたは、匿名型を使用して必要なプロパティを持つクラスを作成し、次のようにそれを使用するために好きではない場合は、この

public void Popular(IEnumerable<Computadora> computadoras) 
{ 
    var data = (from c in computadoras 
       select new { 
          CodigoInterno = c.CodigoInterno, 
          Departamento = c.Departamento.Name, // If the department entity has a name property. 
         // assign the properties to be shown in grid like this 
          }).ToList(); 

    var bs = new BindingSource() {DataSource = data}; 
    dgvDatos.DataSource = bs; 
} 

を試してみてください。

public void Popular(IEnumerable<Computadora> computadoras) 
{ 
      var data = (from c in computadoras 
        select new Computer{ 
             CodigoInterno = c.CodigoInterno, 
             Departamento = c.Departamento.Name, //If the department entity has a name property. 
            // assign the properties to be shown in grid like this 
           }).ToList(); 

      var bs = new BindingSource() {DataSource = data}; 
      dgvDatos.DataSource = bs; 
} 

public class Computer 
{ 
    public string CodigoInterno {get;set;} 
    public string Departamento {get;set;} 
    //add properties here 
} 
+0

私は試しても動作しますが、匿名タイプの使用を避けることはできますか?なぜなら私はコンピュータのリストと、ロジックが壊れてしまう匿名型に依存するロジックが多いからです。 –

+0

匿名型を使用したくない場合は、そのクラスを作成して使用してください。更新された回答を確認する – AnjuRaj

関連する問題