2017-11-27 13 views
0

私は従業員のリストとemployeeGroupのリストを持っています。 employeeGroupsリストに一致するレコードがない従業員のリストを取得しようとしています。私はHEREの例を使ってみましたが、私のニーズにはうまく対応しておらず、希望するリストを得るために変更する方法を理解できません。結果は常にNULLです。Linqを使用して、リスト内で他のリストに一致しない項目を取得する

 List<ModuleView.EmployeeBO> employees = EmployeeBA.Employee_GetList_All(DB_Context, IsActiveChoice.Active, IsEnabledChoice.Enabled); 
     List<PortalView.EmployeeGroupBO> groups = SecurityDA.EmployeeGroup_GetList_All(DB_Context); 
     List<ModuleView.EmployeeBO> result = employees.Where(p2=> !groups.Any(p=>p.EmployeeId == p2.EmployeeId)) as List<ModuleView.EmployeeBO>; 
     return result; 

どのような援助が大幅に高く評価されています

は、ここに私のコードです!

答えて

2

ここでの問題はas List<ModuleView.EmployeeBO>です。 .Where()メソッドは、IEnumerable<>を返します。これは遅れて評価され、List<>ではありません。これを有効にするには、単に.ToList()に変更してください。

+0

これはまさに問題でした。ありがとうございました! –

0

これは試してみることもできます。 コードをテストする機会がありませんでした。

List<ModuleView.EmployeeBO> employees = EmployeeBA.Employee_GetList_All(DB_Context, IsActiveChoice.Active, IsEnabledChoice.Enabled); 
List<PortalView.EmployeeGroupBO> groups = SecurityDA.EmployeeGroup_GetList_All(DB_Context); 
List<ModuleView.EmployeeBO> result = employees.Where(p2=> !groups.Any(p=>p.EmployeeId == p2.EmployeeId)).ToList(); 
return result; 
関連する問題