2013-05-30 2 views
0

У меня есть следующий код:Могу ли я получить string.Contains для возврата false?

string s = "123,12346"; 

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

Вышеприведенные возвращает истинное, но есть способ вернуть ложь. Я уже сделал что-то вроде:

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 происходит от PredicateBuilder: http://www.albahari.com/nutshell/predicatebuilder.aspx

+0

Схема базы данных, очевидно, нужно исправить. «x, y, z» в одном столбце неверно. – Jon

+2

Вы не хотите, чтобы string.Contains возвращал false. Вы хотите дать более точное описание того, что вы на самом деле надеетесь достичь. string.Contains возвращает false, не так ли. –

+1

Я не проголосовал, но, возможно, вам следует пояснить, почему «123,12346» должен возвращать false. Должен ли он возвращать true только в случае «123,1234»? –

ответ

-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

Это будет проверять только первый элемент в списке неизвестной длины. Это не проблема. – DonBoitnott

+1

Я не могу скажите, как это должно отвечать на вопрос - вы выбрасываете всю строку после первой запятой или возвращаете пустую строку, если нет запятой. Это все равно вернет 'true' для' '123456,123' '(что я что OP не захочет), и вернет false для '' 1234'', что также кажется неправильным. И похоже, что вы пытаетесь (и не можете) повторно реализовать 'string.Split'. Можете ли вы объяснить, что это должно быть? –

+0

Вы правы, нужна итерация, чтобы поймать все разделители. – Ikado

Смежные вопросы