0

LINQクエリを実行しようとしていますが、しばらくの間困惑しています。ドキュメントを調べてみましたが、このあたりでは、すべてを作成するのに十分な数のピースが見つからないようです。

これをSQLで記述した場合、クエリは次のようになります。

 SELECT *
 FROM (Person JOIN Event ON Person.ID = Event.PersonID) as t
 Where (Event.Type = "Invitation") AND !Exists(SELECT *
                                             FROM Event
                                             WHERE Event.Type = "Something" 
                                                  AND Event.Conference = "someString"
                                                  AND t.ID = Event.PersonID)

部品の解決策しかない場合でも、どんな入力でも大歓迎です。

4

1 に答える 1

0

イベントテーブルには、Personへの外部キーがあるようです。これは、イベントに1人しか参加できないことを意味するため、珍しいようです。このモデルでは、イベントテーブルが多対多のテーブルであると想定します。PeopleとEvents(PeopleEvents?)の間に関連付けがあるとすると、次のような方法でこれを実行できるはずです(!Existsの代わりに!Anyを使用)。

from person in People
from event in person.Events
where event.Type == "Invitation" &&
 !person.Events.Any(event => event.Type == "Something" && event.Conference == "someString")
select new {person, event}

(ここで示している選択した多数を投影するのではなく、ここで他の構造に投影することをお勧めします。)モデルまたは達成しようとしていることについての詳細があれば、さらに役立つ可能性があります。

于 2011-07-19T17:24:01.920 に答える