2016-07-18 6 views
0

を一覧表示し、結果を参加LINQの内側は、私は従業員のは、LINQのは、ここで

var innerJoinQuery = 
       from employee in DbSet 
       join department in DbContext.Set<Departments>() on employee.DepartmentID equals department.ID 
       select new { ID = employee.ID, FirstName = employee.FirstName, LastName = employee.LastName, DepartmentID = employee.DepartmentID, DepartmentName = department.Name }; 


      List<Employees> innerjoinresult_as_employees_list = innerJoinQuery.AsEnumerable().Cast<Employees>().ToList(); 

モデルが欲しいものを返す結合です:

public class Employees 
    { 
     public int ID { get; set; } 

     [Required] 
     public string FirstName { get; set; } 
     [Required] 
     public string LastName { get; set; } 

     public int DepartmentID { get; set; } 

     [NotMapped] 
     public string DepartmentName { get; set; } 
    } 

私の問題は、私はそうList<Employees>としてのvar innerJoinQueryを持つことができないということです私はそれを返すことができます。

これを行う方法を知っている人はいますか?

答えて

1

あなたが正しく理解している場合は、結果をEmployeesインスタンスのリストに変換する方法を探しています。

これは、LINQステートメントの投影部分を更新することで可能です。現在、それは異形のオブジェクトに投影します。あなたはEmployeesタイプ

var innerjoinresult_as_employees_list =(from employee in DbSet 
             join department in DbContext.Set<Departments>() 
             on employee.DepartmentID equals department.ID 
             select new Employees { 
                ID = employee.ID, 
                FirstName = employee.FirstName, 
                LastName = employee.LastName, 
                DepartmentID = employee.DepartmentID, 
                DepartmentName = department.Name } 
             ).ToList(); 

結果に突出したいあなたは、ないEmployeeオブジェクト匿名型に突き出ている

+0

「Employees」というクラスがありますか? – Shyju

+0

このエラーが発生します... - >エンティティまたは複合型 'Ferrero.Model.Employees'をLINQ to Entitiesクエリで構築できません。 –

+0

はい私は:/ .... –

1

(変数innerjoinresult_as_employees_listの値はEmployeesクラスのリストになります)。クエリを次のように変更してください。

var innerJoinQuery = 
    from employee in DbSet 
    join department in DbContext.Set<Departments>() 
     on employee.DepartmentID equals department.ID 
    select new Employee { ID = employee.ID, 
          FirstName = employee.FirstName, 
          LastName = employee.LastName, 
          DepartmentID = employee.DepartmentID, 
          DepartmentName = department.Name 
         }; 

List<Employees> innerjoinresult_as_employees_list = innerJoinQuery.ToList(); 
+0

私はこのエラーを受け取ります... - エンティティまたは複合型 'Ferrero.Model.Employees'は、LINQ to Entitiesクエリで構築できません。 –

+1

'Employee'はあなたのモデルのエンティティタイプですか?エンティティタイプに投影できます。非エンティティ(DTO)タイプの匿名タイプのみです。なぜそれらを直接使用するのではなく、エンティティタイプに投影しようとしていますか? –

+0

そうですね。今、私はそれを知っています。あなたの答えをありがとうございました:) –

1

これはテストしていませんが、試してみてください。

 var innerJoinQuery = 
       (from employee in DbSet 
       join department in DbContext.Set<Departments>() on employee.DepartmentID equals department.ID 
       select new Employees{ ID = employee.ID, FirstName = employee.FirstName, LastName = employee.LastName, DepartmentID = employee.DepartmentID, DepartmentName = department.Name }).ToList(); 

List<Employees> employees = new List<Employees>(innerJoinQuery); 
関連する問題