2010-12-07 6 views
-1

C#またはVB.NETの両方の提案を受け取ります。LINQ to SQLを使用して、文字列内の何かで始まる単語をクエリします。

私はいくつかのデータを照会するためにLINQ to SQLを使用しています。

-FirstName(またはgivenameすなわちジョン) -LastName(スペースで区切ってミドルネームと姓を持つすなわちマックTenny

一部の人々はミドルネームといくつかのドンを持っている:

は、ここに私の従業員テーブルcolummnsです「tは。ここではいくつかのサンプルデータがあります。

-FirstName姓

  • ジョン・マックTenny(ミドルネームの "Mac" で)
  • マイク・ミカ(なしミドルネーム)(ミドルネーム "ジョー" と)
  • サラ・ジョーはAnsi
  • マーティン・デヴィッド(なしミドルネーム)
  • スコット・ジョー(なしミドルネーム)

私は検索基準で始まる中規模の人を検索したい。 「ジョー」で始まっここで私はミドルネームを持つ従業員の検索方法は次のとおりです。私は家族の名前(姓の最後の部分)を持つ従業員を照会するにはどうすればよい

  query = From emp In db.Employees _ 
        Where emp.LastName.StartsWith("joe") _ 
        Select emp 

は「ジョー」を始め?

ありがとうございます。

答えて

2
' return employees where family name starts with "joe" 
query = From emp In db.Employees _ 
     Where emp.LastName.Substring(emp.LastName.LastIndexOf(" ") + 1) _ 
          .StartsWith("joe") _ 
     Select emp 

' return employees where middle name or family name starts with "joe" 
query = From emp In db.Employees _ 
     Where emp.LastName.StartsWith("joe") _ 
      OrElse emp.LastName.Contains(" joe") _ 
     Select emp 
+0

@LukeH、これは質問の答えではありません。つまり、 'Mary Sample TestJoe'を返しますが、これを行うべきではありません。 –

+0

@Saeed:そうではありません!私はあなたがdownvotingする前に実際に試してみることをお勧めします。 – LukeH

+0

-.- orelseを忘れた – Matt

3
query = From emp In db.Employees _ 
    Where emp.LastName.StartsWith("joe") _ 
    or Lastname.contains(" joe") _ 
    Select emp 
+4

与えられた問題を解決するが、ミドルネームは、メアリー・ジョー(メアリー・ジョー・ジョンソン)何でしたか?ミドルネームは別のフィールドにする必要があります。 – Wade73

+0

うん、私はそれを掘り起こしていませんでした。ミドルネームは別のフィールドにすることに同意しました – Matt

+2

@GenericTypeTea "検索基準で始まる中規模の人物を検索したい" – Matt

関連する問題