我确信我必须在这里找到一些非常简单的东西..
好的,我有一个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();
我在哪里和那里得到一个模棱两可的调用“无法在e.areaId上解析方法Contains(int)”。
我尝试过使用:
var unusedAreas = availableAreas.Except(currentAreas).ToArray();
没有欢乐..任何人都可以帮助我 - 我猜我必须在这里错过一个基本的基础。
非常感谢答案 0 :(得分: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();