3

次のSQL文を検討してください -

SELECT * FROM Customers WHERE FirstName LIKE '%IS%'

これは、名前の一部に「IS」が含まれる顧客を検索しますよね?

同じステートメントがLINQにあるのが好きです-

var names = from cust in customers where cust.FirstName ......

その条件を指定することはできません。誰でも私がこれを解決するのを手伝ってくれますか?

あなたの時間と知恵を共有してくれてありがとう。

4

3 に答える 3

8

ほとんどのLINQ->SQLトランスレータは、c#からいくつかの通常のメソッドを取得し、それらをSQLに変換します。含むは、翻訳するための非常に一般的な方法であり、linq2sqlおよびEFで機能します

var names = from cust in customers 
            where cust.FirstName.Contains("IS")
            select cust;

編集:(大文字と小文字を区別しない)

var names = from cust in customers 
            where cust.FirstName.ToLower().Contains("is")
            select cust;
于 2013-02-06T08:54:32.777 に答える
2

Case insenstiveの場合、String.IndexOf Method (String, StringComparison)を使用できる場合containsは、文字列を同じ大/小文字 (小文字または大文字) に変換するか、より適切に変換できます。

var names = from cust in customers 
            where cust.FirstName.IndexOf("IS",StringComparison.InvariantCultureIgnoreCase) >= 0
            select cust;

この方法によるパフォーマンスの向上は無視できるかもしれませんが、大文字と小文字を区別しない適切な比較が保証されます。StringComparison大文字と小文字を区別しない文字列比較に enumを使用することは常に良い習慣です。あなたは見るかもしれません:トルコ語のİ問題となぜあなたが気にかけるべきか

于 2013-02-06T10:39:19.790 に答える
1

これを試して:

var names = from cust in customers where cust.FirstName.Contains("IS")
于 2013-02-06T08:54:57.410 に答える