0

我确定我必须在这里遗漏一些非常简单的东西..

好的,我有一个 AreaId 列表。我想将该列表与 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 上的 where 和“无法解析方法包含(int)”上得到一个模棱两可的调用。

我试过使用:

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

没有喜悦..有人可以在这里帮助我吗-我猜我必须在这里缺少基本知识。

非常感谢

4

1 回答 1

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();
于 2013-03-27T14:25:25.287 回答