我正在尝试将用户输入的字符串与数据库中的字符串进行匹配。 在我尝试匹配它们之前,我需要将两个空间都取出来。
我该怎么做?
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 :(得分:2)
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 :(得分: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)
我认为这里最好的答案是不要试图找出用户输入数据的方式,而是确保他们首先输入了有效的部件号。你能提供某种形式的输入格式吗?即使它意味着使用空格所在的连字符,您也可以在检查前删除它们,但至少您将拥有正确格式的数据。