2016-07-28 8 views
0

このクエリは、door_idにすべてのタグが一致するドアIDを返します。Llinqクエリをすべての一致からORに変換します(少なくとも1つのタグが一致する必要があります)

List<decimal> matchingDoors db.tags 
    .Where(x => x.user_id == userId && (null == SystemId|| x.syid == SystemId)) 
    .GroupBy(x => x.door_id)   
    .Where(x => tags.All(y => 
      x.Any(z => z.name == y))) 
    .Select(x => x.Key).ToList<decimal>(); 

少なくとも1つのタグ( 'OR')と一致する結果を返すようにクエリを変更するにはどうすればよいですか?

+0

@a_horse_with_no_nameこれをチェックしてください。 –

+0

両方に一致するものだけを返します。 –

+0

質問を更新していない間違った質問 –

答えて

1

tagsコレクションでContains()メソッドを使用する必要があります。ここには:

List<decimal> matchingDoors db.tags 
    .Where(x => x.user_id == userId && (null == SystemId|| x.syid == SystemId)) 
    .GroupBy(x => x.door_id)   
    .Where(x => x.Any(y => tags.Contains(y))) //this is where magic 
    .Select(x => x.Key).ToList<decimal>(); 
+0

lovely。ありがとね。 –

関連する問題