linq查询如何取出字符串中的空格

时间:2011-12-15 12:00:25

标签: linq compare equals

我正在尝试将用户输入的字符串与数据库中的字符串进行匹配。 在我尝试匹配它们之前,我需要将两个空间都取出来。

我该怎么做?

  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 个答案:

答案 0 :(得分:2)

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

这会删除字符串product.Partnumberpartnumber中的空格 。但是,如果使用linq-to-SQL,则部分product.Partnumber.Replace(..)将不起作用。但我不确定为什么必须删除数据库中产品编号的空格。听起来像是不一致的数据。

答案 1 :(得分:2)

   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 :(得分:1)

在这种情况下,我会考虑以不同的方式实现它。如果只需要表以便将其与用户输入进行比较,则可以在运行查询之前提前删除数据库中的空格。删除数据库中的空格也没有意义,您可以在客户端代码中执行此操作。

在这种情况下,您将能够使用常规Equals,而且它应该更有效率。

答案 3 :(得分:0)

我认为这里最好的答案是不要试图找出用户输入数据的方式,而是确保他们首先输入了有效的部件号。你能提供某种形式的输入格式吗?即使它意味着使用空格所在的连字符,您也可以在检查前删除它们,但至少您将拥有正确格式的数据。