0

私はここで本当に単純な何かを見逃しているに違いないと確信しています。

OK、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();

これにより、2つのリストが比較され、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();

I am getting an ambiguous invocation on the where & "Cannot resolve method Contains(int)" on the e.areaId.

Ive tried using:

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

No Joy.. Can anyone help me out here - I am guessing I must be missing a fundamental basic here.

many thanks

4

1 に答える 1

0

You create anonymous types with just one int property. That's not necessary and it causes the later problem. If you create lists of int you'll be OK:

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 に答える