2017-04-10 3 views
0

.Where(string)に渡すことができる動的linq式文字列の内部に配列を定義するにはどうすればよいですか? 私はすでに{ "val a", "val b", "val c" }を試しましたが、これは動作しません。ここで動的linq式の配列を定義します

は私が達成したいものの例です:

public class Person 
{ 
    String Name { get; set; } 
    int Age { get; set; } 
} 

は今、私は、例えば、完全に動的に作成された動的LINQの式の文字列を、使用してIQueryable<Person>を照会したいですNameは、事前定義された値のリストに対して照会されます。以下の作品が、値が多い時に面倒です:

myQueryablePersons.Where("Name == \"John Doe\" || Name == \"Mr Smith\" || Name == \"CatWoman\"); 

私は何をしたいのですが、このようなものです:私はこの缶は、通常のC#を使用して達成方法を知っている

myQueryablePersons.Where("{ \"John Doe\", \"Mr Smith\", \"CatWoman\" }.Contains(Name)"); 

またはプレーンLinqが、私はWhere()に渡された文字列を使用してのみそれをしたいと思います。これはまったく可能ですか?私はすでにStackoverflowや他のサイトで他の答えを探していましたが、実際に私の特定の質問に合った答えは見つかりませんでした。

+1

具体的な問題を明確にしたり、必要なものを正確に強調してください。現在書かれているとおり、あなたが求めていることを正確に伝えるのは難しいです。この質問を明確にする方法については、How to Askページを参照してください。 –

+2

コードを共有し、問題を指定してください。 "これは入力ですが、これは出力ですが、ここに期待される出力です"というような例を挙げてください。 – Berkay

+1

あなたが使っているダイナミックなlinqを正確に*教えてください(2つまたは3つの異なる実装があります) – xanatos

答えて

0

ダイナミックlinqは、配列 "インライン"の作成をサポートしていないと思います。あなたができることは、引数として渡してください:

var persons = new[] 
{ 
    new Person { Name = "John Doe" } 
}; 

var names = new[] { "John Doe", "Mr Smith" }; 
var res = persons.AsQueryable().Where("@0.Contains(Name)", names).ToArray(); 
+0

ありがとうございますが、残念ながら、クエリは完全に動的でなければならないため、私の使用例ではできないことです。 .. – Slayer

+0

@Slayerこれで運がいい? –

関連する問題