3

次の状況があります。複数のタグが関連付けられている「会話」エンティティ/テーブル。タグもエンティティ/テーブルです。キー/ID は tagName (文字列) です。

クライアント側 (javascript) では、タグを扱うときに文字列の配列を操作します。

ここで、指定されたすべてのタグを持つすべての会話を取得したいと考えています。


入力は文字列の配列で、出力は Conversations のコレクションである必要があります

私はもう試した:

var filterTags = new List<EFModels.Tag>();
foreach (var tagName in tags)
            {
               filterTags.Add(new EFModels.Tag() { Name = tagName});
            }

var conversations = from c in context.Conversations where !c.Tags.Except(filterTags).Any() select c ;

これに関する問題は次のとおりです。Unable to create a constant value of type 'EFModels.Tag'. Only primitive types or enumeration types are supported in this context- これは理にかなっています。

どうすれば選択を行うことができますか?最善のアプローチは何ですか?(私はまだlinqを使いたいのですが、SQL選択を書きません)

4

1 に答える 1

1

c.Tags をタグ名に射影できます。

そんな感じになると思います

var conversations = from c in context.Conversations where !c.Tags.Select(tag => tag.Name ).Except(filterTags).Any() select c ;

filterTags は、タグの名前を含む文字列のリストです

于 2012-06-26T08:53:04.803 に答える