2017-04-10 1 views
0

Entity FrameworksとLINQを使用してからしばらくしています。私はSQLのようなクエリを実行しようとしています。これは、親テーブルの外部キーを介して定義された1対多の関係でうまく動作します。LINQには同様のステートメントが作成されていません

myEntity.Where(me => me.relatedEntity.Name.Contains("a"); 

これは正しくSQLに似ています。しかし、私はジャンクション・テーブルを介して多対多リレーションシップをクエリすると、SQLにequalsステートメントが作成されます。

var name = "bo"; 
myEntity.Where(me => me.Users.Select(u => u.Name).Contains(name)); 

明らかなものがありませんか?ソースが文字列とソースが文字列のコレクションである第二1である、あなたの最初のクエリでは、正しいです

おかげ

+0

2番目のバージョンでは、名前のコレクション内のエンティティに「実際に等しい」名前が含まれているかどうかを確認しています。あなたは 'me.Users.Any(u => u.Name.Contains(name)) 'を使用してください。 –

答えて

1

。私は、あなたが探していることはこれだと思う:

var r=myEntity.Where(me => me.Users.Any(u => u.Name.Contains(name))); 

あなたは、すべてのユーザーが代わりにAnyAll拡張メソッドを使用し、いくつかの文字列パターンが含まれていることを条件として必要な場合。

+0

ありがとう、それはしばらくありました – DavidB

+0

私は助けてくれると嬉しいです。 – octavioccl

関連する問題