5

これが私のクエリです:

var x = db
   .Users
   .Where(u => u.Locations.Any(l => searchedLocation.Counties.Any(c => c.LocationId == l.LocationId));

環境:

  • UsersですIQueryable<User>。(EF オブジェクト セット)
  • searchedLocationLocationオブジェクトです。
  • CountiesですICollection<MiniLocation>

私がやろうとしていること:

これらの場所の郡のいずれかが、検索された場所に属する郡のいずれかの locationId を持つすべてのユーザーを返します。

例:

ニューヨーク市を検索します (LocationId = 1. County1LocationId = 2)

ユーザー: ボブ。場所: ソーホー。County1LocationId = 2. County2 LocationId = 3.

それで、それは一致です。(ソーホーには LocationId が 2 の郡があり、NYC にもあるため)

私が受け取るエラー:

タイプ 'xxx.xxx.Locations.MiniLocation' の定数値を作成できません。このコンテキストでは、プリミティブ型 (Int32、String、および Guid など) のみがサポートされます。

何か案は?

4

2 に答える 2

1

このMSDNページには、この構成はサポートされていないと記載されています。このメソッドを.Net3.5Linq to Entitiesに使用して、の使用を置き換えることができますAny

于 2012-05-04T03:16:23.730 に答える
0

検索できるロケーション ID のリストを作成する必要があります。

var idsToSearch = "1,2,3,4,5...";    

Contains次に、次の方法で使用できます。

var x = db
       .Users
       .Where(u => idsToSearch.Contains(u.LocationId));
于 2012-05-04T03:27:57.093 に答える