15

System.Linq.Dynamicを使用して LIKE 演算子を使用する方法を教えてもらえますか?

LIKE動的where クエリに複数の式を追加する必要があります

/*
var query =
db.Customers.
Where("CityName Like @0 or CityName Like @1", "London", "USA")
*/
var query =
db.Customers.
Where("CityName Like @0 or CityName Like @1%", "London", "USA")

ありがとうございます

4

5 に答える 5

31

単に「CityName.Contains(@1)」を使用してみてください。これは、アクセス可能な型でのメソッド呼び出しであるため、適切なラムダに変換されます。

何かのようなもの:

var query =
db.Customers.
Where("CityName.Contains(@0) or CityName.Contains(@1)", "London", "USA")

動的ライブラリに付属のサンプル アプリでテストしたところ、LIKE 演算子が生成されました

于 2011-01-05T02:08:34.107 に答える
5

.StartsWith(), .EndsWith()およびwhich を使用すると.Contains()、それぞれ末尾、先頭、および周囲のワイルドカードを使用して LIKE SQL を生成できます。ワイルドカードが埋め込まれたステートメントを生成する方法がわかりません。

于 2011-01-05T01:14:44.413 に答える
4

これにより、LIKE整数フィールドの演算子が許可されます。

.Where(searchField + ".ToString().Contains(@0)", searchString);
于 2012-10-23T21:54:55.980 に答える
3

where句を追加するだけです

var query = db.Customers.Where(c=>c.CityName.contains("London"));
query = query.Where(c=>c.CityName.contains("USA"));
query = query.Where(c=>c.CityName.contains("Johannesburg"));

しかし、上記のクエリはそれを作成します:

select * from Customer where CityName like "london" and CityName like "USA" など...

あなたが欲しい

select * from Customer where CityName like "london"またはCityName like "USA" など...

Dynamic Created またはpredicatebuilderを使用できるステートメントを使用するには、使用できる機能が本当にたくさんあります...

http://www.albahari.com/nutshell/predicatebuilder.aspx

var predicate = PredicateBuilder.False<Customer>();
predicate = predicate.Or(c=>c.CityName.Contains("London"));
predicate = predicate.Or(c=>c.CityName.Contains("USA"));
predicate = predicate.Or(c=>c.CityName.Contains("Johannesburg"));
于 2011-01-05T01:14:11.683 に答える
0

これを試すことができます。

IList<string> keyword = new List<string>() { "London", "USA", "Johannesburg" };
            var query = db.Customers.Where(c => keyword.Contains(c.CityName));
于 2011-01-05T08:35:28.363 に答える