2013-05-30 67 views
0

我有以下代碼:我可以得到string.Contains以返回false嗎?

string s = "123,12346"; 

bool b = s.Contains("1234"); 

以上返回true,但有沒有辦法返回false。我已經做了類似:

string[] s = {"123","12346"}; 

bool b = s.Contians("1234"); 

上述工作,但在一個包含LINQ-To-Entities表達,因爲它不喜歡在包含我pre EF 4.0不能使用以上。

我有一個功能類似一個SQL IN子句的擴展方法,但我需要明確地鍵入當我使用它,我不知道該怎麼對括號把參數:

predicate = predicate(x=> WhereIn<>(x.Id, Ids)); 

x.Id is a string and Ids is a string以及。如果我把WhereIn<string,string>,它抱怨說Argument type string is not assignable to parameter type ObjectQuery<string>

predicate來自PredicateBuilderhttp://www.albahari.com/nutshell/predicatebuilder.aspx

+0

數據庫模式顯然需要修理。一列中的「x,y,z」是錯誤的。 – Jon

+2

你不希望string.Contains返回false。你想更準確地描述你實際希望達到的目標。 string.Contains返回false不是它。 –

+1

我沒有投下來,但也許你應該澄清爲什麼「123,12346」應該返回false。例如,如果它只在「123,1234」的情況下返回true? –

回答

-2

使用

string searchString = "123,12346"; 
bool b = sep(searchString,",").Contains("1234"); 

//Returns this string before "," 
public static string sep(string s,string delimiter) 
{ 
    int indx = s.IndexOf(delimiter); 
    if (indx >0) 
    { 
     return s.Substring(0, indx); 
    } 
    return ""; 
} 
+0

這將檢查僅在未知長度的列表中的第一個項目,這沒有_not_解決問題。 – DonBoitnott

+1

我不能告訴它如何回答這個問題 - 在第一個逗號後面丟掉所有的字符串,或者如果沒有逗號,則返回一個空字符串,對於「123456,123」相信OP不會想要),並且會爲''1234「'返回false,這看起來似乎是錯誤的。看起來好像你正在嘗試(和失敗)重新實現'string.Split'。你能解釋一下這應該是? –

+0

你是對的,需要迭代來捕獲所有分隔符。 – Ikado

相關問題