запрос linq как вынести пробелы в строках - PullRequest
1 голос
/ 15 декабря 2011

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

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

  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  

Ответы [ 4 ]

2 голосов
/ 15 декабря 2011
   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;                
            }

Вот как я это сделал

2 голосов
/ 15 декабря 2011
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(..) не будет работать.Но я не уверен, почему вы должны удалить пробелы номера продукта в базе данных.Звучит как противоречивые данные для меня.

1 голос
/ 15 декабря 2011

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

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

0 голосов
/ 15 декабря 2011

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

...