2010-12-23 160 views
0

在關於如何很好地使用lambda表達式做一些建議之後。lambda表達式試圖基於另一個查詢一個列表

我想要的是獲取基於代理機構的展示位置列表。我需要placement.agency!= agency的展示位置,但placement.agencypersonnel包含任何代理機構工作人員。

那麼,植入廣告不是該機構,但也有來自參與其他機構的佈局

該機構我不知道基於第二條件如何查詢人員。

因此,像:

// agency is being passed in 
    var agencySupervisors = agency.AgencyPersonnel; 

    return agency.Placements 
      .Where(p => p.Supervisors.Contains(agencySupervisors)) 
      .Where(p => p.Agency != agency); 

我得到一個包含應該指單個對象,而不是一個集合 - 這就是爲什麼它的示數..但我不知道如何得到它檢查集合中的所有對象。

也嘗試過任何

return agency.Placements 
      .Where(p => agencySupervisors.Any<PlacementSupervisor>(p.Supervisors)) 
      .Where(p => p.Agency != agency); 

所以希望它只是我用錯了!

作品中的另一個扳手試圖找出安置主管和機構人事實體如何相互關聯..我認爲它與AgencyPersonnelId = SupervisorId相關聯,所以我猜這也必須考慮到我的表達。

謝謝!

編輯:如果兩個列表中的對象類型不同 - 但我知道該ID將匹配時該如何處理。我是否必須編寫一個比較器,並以某種方式將其納入表達式?即。 AgencyPersonnelId = SupervisorId

我曾嘗試:

return placements 
       .Where(p => p.Supervisors.Any(supervisor => agencySupervisors.Any(ap => ap.AgencyPersonnelId == supervisor.SupervisorId))); 

但它給我任何結果,因此顯然是錯誤的。

編輯:實際上,當我嘗試遍歷返回的集合中的位置時,我得到一個空引用異常 - 所以我不確定它是否與我的表達式或我返回的方式有關結果。

+1

會agency.Placements不斷含有不屬於該agengy展示位置?如果沒有,Suprvisors會提及他們所涉及的所有展示位置? – 2010-12-23 06:51:09

回答

0

感謝大家的幫助 - 因爲對象是不同類型的,我最終不得不做一些不同的事情 - 但後來發現我能夠使用他們的ID進行比較,所以結果如下:

var agencySupervisors = (from ap in agency.AgencyPersonnel 
            where ap != null 
             select ap.AgencyPersonnelId).ToList(); 

      return 
       (from p in m_PlacementRepository.Linq orderby p.PlacementId select p) 
       .Where(p => p.Agency != agency) 
       .Where(p => p.Supervisors != null && p.Supervisors.Any(s => agencySupervisors.Contains(s.SupervisorId))); 

加了Mikael作爲正確地指出,我開始與錯誤的集合中的第一個地方:)

1

你是密切與Any & Contains - 一次

return agency.Placements   
    .Where(p => agencySupervisors.Any(supervisor => p.Supervisors.Contains(supervisor)) 
    .Where(p => p.Agency != agency); 
0

都試一下,我認爲你可以用.Intersect也做到這一點:

return agency.Placements 
     .Where(p => agencySupervisors.Intersect(p.Supervisors).Any() 
        && p.Agency != agency); 
相關問題