2017-07-08 8 views
1

特定のcharで終わるSQLデータベースの名前を表示したいが、Controller ActionResultでWildCardを使用できない。C#MVC - LINQクエリでLIKEを使用する

これは私が働きたいと思う私の現在のコードです。

public ActionResult GetClients() 
    { 
     MyDBEntities myDBEntites = new MyDBEntities(); 
     var clients = from c in myDBEntites.Client 
         where c.name LIKE '%r' 
         select c; 
     return View(clients); 

    } 

私はここでは機能しません。ワイルドカードで動作しない場合、どのように特定の文字で終わる名前を取得できますか?

+1

LINQ私の知る限りでは、 'LIKE'を行うことはできません。 'どこでc.name.EndsWith(" r ")' – apokryfos

+0

@apokryfosありがとう!私はワイルドカードがなぜ機能しなかったのだろうか、それはワイルドカード以外の完全なSQLコードのようなものだということです。奇妙な。 – Dolev

+0

LINQは類似していますが、SQLと同じではありません。これは単純に異なるクエリ言語です。コンパイラはLINQをSQLに変換するので、クエリを実行するときにできるだけ快適なので、 '.EndsWith'が実際にSQLで' LIKE'に変換されても驚かれることはありません。 – apokryfos

答えて

2

LIKEを使用することができますあなたがベストプラクティスとしてEndsWith

c.name.EndsWith("r"); 

を使用することができますので、あなたがusingブロック内でごDBEntitiesをラップ検討する必要があり、SQLキーワードであります正しく配置されています。また、コントローラ内でクリーンな方法で取り出すのではなく、新しいメソッド/サービス層に移動することもできます。

サービス層

public IEnumerable<Client> RetrieveClients(string endString) 
{ 
    using (MyDBEntities myDbEntities = new MyDBEntities()) 
    { 
     var clients = from c in myDBEntites.Client 
         where c.name EndsWith(endString)' 
         select c; 

     return clients; 
    } 
} 

コントローラ

public ActionResult GetClients() 
{ 
    var clients = RetrieveClients("R"); 
    return View(clients); 
} 
2

あなたはEndsWith

public ActionResult GetClients() 
    { 
     MyDBEntities myDBEntites = new MyDBEntities(); 
     var clients = from c in myDBEntites.Client 
         where c.name.EndsWith("r") 
         select c; 
     return View(clients); 

    } 
+0

ありがとうございました!それは今のところ – Dolev

2

私はここで行うためにあなたを示唆している何String.EndsWithLINK TO DOCUMENTATION)メソッドでこれを解決しようとすることです。

は私がofcourseのLINQを使用して、あなたの質問に基づいた例を書いてみましょう:

public ActionResult GetClients() 
{ 
    MyDBEntities myDBEntites = new MyDBEntities(); 
    var clients = from c in myDBEntites.Client 
       where c.name.EndsWith("r") 
      select c; 

return View(clients); 
} 
+0

@Dolevあなたがこの答えを見つけた場合私に教えてください:) –

関連する問題