2012-07-25 47 views
0

string1:如何
string2:你好嗎?LINQ to SQL選擇字符串中有任何字的所有記錄拆分

我想要做的是從數據庫中選擇所有記錄,方法是檢查string1和string1並選擇任何具有「How」或「Are」或「you」的記錄。

pager1.ItemCount = appliedQuery.Where(q => q.string1.Contains(string2)).count(); 

請注意:String1中只是一個字,我只是想在數據庫中的所有記錄在字符串2的任何單詞的任何一次出現。

我明白,str​​ing2需要拆分,但是在拆分之後,我該如何在linq查詢語句中使用它來獲取記錄?

預先感謝

+0

因此'string1'在數據庫中,而'string2'來自另一個輸入源? – rikitikitik 2012-07-25 07:19:07

+0

是string1在數據庫中,string2來自另一個來源 – 2012-07-25 07:21:01

回答

1

看看我如何構建我的linq查詢。我希望這有幫助。 只需嘗試將代碼複製並粘貼到控制檯應用程序中即可查看結果。

class Program 
{ 
    static void Main(string[] args) 
    { 
     // List of strings that you may consider it from your 
     /// database which is String1 
     List<string> lstStrings = new List<string>(); 
     lstStrings.Add("twenty one"); 
     lstStrings.Add("twenty two"); 
     lstStrings.Add("twenty three"); 
     lstStrings.Add("twenty four"); 

     // The string to compare to which is your String2 
     string strString = "one two four"; 

     // Splitting the strings to be compared 
     string[] strArray = strString.Split(' '); 

     // The linq that helps you query the data exactly as what you wanted 
     var result = (from string A in lstStrings 
           from string B in strArray 
           where A.Contains(B) 
           select A).Distinct(); 

     // Count result 
     Console.WriteLine(result.Count()); 

     // Individual values 
     foreach (string str in result) 
     { 
      Console.WriteLine(str); 
     } 

     Console.ReadLine(); 
    } 
} 
1

一種可能的解決方案可以是以下:

foreach(string s in string2.Split(' ')) 
{ 
    pager1.ItemCount += appliedQuery.Where(q => q.string1.Contains(s)).count(); 
} 
+0

那麼查詢string2中的每個單詞?我不認爲這是個好主意。 – rikitikitik 2012-07-25 07:21:47

2

拆分string2成字符串的數組:

string[] words = string2.Split(' '); 

然後檢查string1是在任何項目在陣列中:

pager1.ItemCount = appliedQuery.Where(q => words.Contains(q.string1)).Count(); 
相關問題