2011-12-15 2 views
1

Я пытаюсь сопоставить строку, введенную пользователем в строку в базе данных. Прежде чем я попытаюсь сопоставить их, мне нужно снять пробелы между ними.linq запрос, как удалить пробелы в строках

как это сделать?

public static Product GetProductbypart(ModelContainer context, string partnumber) 
    { 
     var query = from product in context.Products 
        where product.Partnumber == partnumber 
        select product; 

     return query.FirstOrDefault(); 
    } 

это мой запрос, который работает, если пользователь вводит точный номер детали. Но некоторые пользователи могут вводить его слишком много пробелов или слишком меньше.

Я хочу взять номер детали, чтобы вынуть пробелы. Затем возьмите product.Partnumber и возьмите пробелы этого также, чтобы увидеть, есть ли совпадение.

Примеры входов:

MC-9a 1a AC24V 
MC-9a 50/60Hz 
1 
123 
MC+123-1 
F6h67e 
_8jj+j7s 
+0

Можете ли вы предоставить образцы для ваших материалов? –

+1

Является ли ваш контекст контекстом linq для сущностей? – Hammerstein

+0

да, я верю, что я положил всю функцию в – Beginner

ответ

1
public static Product GetProductbypart(ModelContainer context, string partnumber) 
      { 
       partnumber = partnumber.Replace(" ", String.Empty); 
       var products = from product in context.Products 
           select product; 
       foreach(var item in products) 
       { 
        if (item.Partnumber != null) 
        { 
         item.Partnumber = item.Partnumber.Replace(" ", String.Empty); 
         if (item.Partnumber == partnumber) 
         { 
          var query = from product in context.Products 
             where product.Id == item.Id 
             select product; 

          return query.FirstOrDefault(); 
         } 
        } 
       }  
       return null;     
      } 

Это, как я сделал это

1
string partnumber = partnumber.Replace(" ", String.Emtpy); 
var query = from product in context.Products 
        where product.Partnumber.Replace("", String.Empty) == partnumber 
        select product; 

Это удаляет пробелы в Струны product.Partnumber и partnumber. Однако, если вы используете linq-to-SQL, то часть product.Partnumber.Replace(..) не будет работать. Но я не уверен, почему вам нужно удалить пробелы номера продукта в базе данных. Похоже на непоследовательные данные для меня.

+0

есть много противоречивых данных, которые я не могу контролировать – Beginner

0

Я думаю, что лучший ответ здесь заключается в том, чтобы не пытаться выяснить, как пользователь вводил данные, вместо этого убедитесь, что они ввели действительный номер детали в первую очередь. Можете ли вы предоставить какой-то формат ввода? Даже если это означает использование дефисов, где есть пробелы, вы всегда можете удалить их перед проверкой, но по крайней мере у вас будут данные в правильном формате.

+0

номера деталей arent stright forward, некоторые могут иметь пробелы в тексте, а некоторые - только одно число – Beginner

1

В этом случае я бы подумал о его реализации несколько иначе. Если вам нужна ваша таблица только для того, чтобы сравнить ее с пользовательским вводом, вы можете удалить пробелы в базе данных заранее, прежде чем запускать запрос. Также нет смысла удалять пробелы в базе данных, вы можете сделать это в клиентском коде.

В этом случае вы сможете использовать обычный Equals, а также он должен быть немного более эффективным.

+0

У меня нет контроля над db, я хочу вынуть номер детали от db, а затем сопоставить его с введенным номером части – Beginner

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