2013-03-27 42 views
0

我確定我必須在這裏丟失一些非常簡單的東西..檢索提供的列表中不存在id的所有區域

OK我有一個AreaIds列表。我想將該列表與MapArea表進行比較,並返回表中存在但不在提供的列表中的任何ID。

這是我的,我要檢查供應領域的列表:

var currentAreas = (from c in _entities.mapAreaLink 
          where c.listingId == id 
          select new 
           { 
            c.MapArea.areaId 
           } 
          ).ToList(); 

這是mapAreas的獲得詳盡的清單..

var availableAreas = (from m in _entities.MapAreas 
           select new 
            { 
             m.areaId 
            } 
           ).ToList(); 

這比較兩個列表,並得到項目存在於maparea表中,但不存在於maparealink中(受我正在查看的項目的ID限制)。

var unusedAreas = availableAreas.Except(currentAreas).ToList(); 

我似乎得到列表回好了,但我需要做的是現在返回基於Except.tolist的上述結果maparea對象的列表。

我想我能做到這一點:

 var mapareas = (from e in _entities.MapAreas 
         where unusedAreas.Contains(e.areaId)    
         select e).ToList(); 

我在哪裏&「無法解析方法包含(INT)」關於e.areaId得到一個模棱兩可的調用。使用

我用盡:

var unusedAreas = availableAreas.Except(currentAreas).ToArray(); 

沒有喜悅..誰能幫助我在這裏 - 我猜我必須在這裏失去了一個根本的基礎。

千恩萬謝

回答

0

創建匿名類型只有一個int財產。這不是必需的,它會導致後面的問題。如果你創建的名單int你會沒事的:

var currentAreas = (from c in _entities.mapAreaLink 
        where c.listingId == id 
        select c.MapArea.areaId).ToList(); 
var availableAreas = (from m in _entities.MapAreas 
         select m.areaId).ToList(); 
相關問題