2012-11-20 82 views
0

的存儲庫模式和單位我使用的庫和單位工作模式與實體框架5過濾收集內部與實體框架5和工作

我想所有的「機構」,其「車」但只有那些在參數中由參數發送並且屬於參數發送狀態的ID的Cars。

例如

public IEnumerable<Agency> GetList(int stateId, string idCarList) 

var ids = idTiposTarjetasList.Split(','); 
var intIds = ids.Select(int.Parse); 

然後,我有

Uow.Agencies.GetAll() 

Uow.Agencies.GetAllIncluding(a => a.Cars) 

它檢索一個IQueryable < T>

有反正我可以在一個查詢中檢索包含其汽車的代理商,但只有那些在intIds列表和stateId匹配的stateId參數中包含id的代理

我已經看到這個Stackoverflow question,但IQueryable的檢索讓我煩惱得到它的工作。

如果我在寫這Uow.Agencies.GetAllIncluding VAR = SortedList的從X(C => c.Cars) 然後選擇不能做(說參數不能從查詢推斷

這不起作用:?!。

var ids = idCars.Split(','); 
var intIds = ids.Select(int.Parse); 

var agencies = from agency in 
       Uow.Agencies.GetAllIncluding(c => c.Cars).Where(c => intIds.Contains(c.Cars.Id)).OrderBy(s => s.Id) 
       select agency; 

if (agencies.Any()) 
{ 
    return agencies; 
} 

我該怎麼辦呢 感謝吉列爾莫

回答

0

不能取得與部分載荷的集合對象(至少不是在一個聲明中),所以你必須在創造類型分別包含agent對象和選定的車輛:

var agencies = from agency in Uow.Agencies.GetAll() 
       select new { Agency = agency, 
          Cars = agency.Cars.Where(c => intIds.Contains(c.Id)) 
          }; 
+0

謝謝! 這也非常有幫助:http://blogs.msdn.com/b/alexj/archive/2009/10/13/tip-37-how-to-do-a-conditional-include.aspx – polonskyg