2011-12-15 17 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(); 
    } 

これは、ユーザーが正確な部品番号を入力すると機能する私のクエリです。しかし、一部のユーザーは、あまりにも多くのスペースやあまりにも少ないタイプでそれを入力することがあります。

私は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.Partnumberpartnumberスペースを削除します。ただし、linq-to-SQLを使用すると、product.Partnumber.Replace(..)の部分は機能しません。しかし、なぜデータベース内の製品番号のスペースを取り除かなければならないのか分かりません。私に矛盾したデータのように聞こえる。

+0

多くの不整合なデータがあります。私はコントロールできません。 – Beginner

0

ここでの最善の答えは、ユーザーがどのようにデータを入力したかを把握しておらず、最初に有効な部品番号を入力したことを確認することです。何らかの形式の入力形式を提供できますか?空白があるハイフンを使用することを意味する場合でも、チェックする前に常にハイフンを削除できますが、少なくとも正しい形式のデータがあります。

+0

部品番号は先行していません。いくつかは空白文字と数字だけです – Beginner

1

この場合、少し違う方法で実装すると思います。ユーザー入力と比較するためにのみテーブルが必要な場合は、クエリを実行する前に、データベース内のスペースを事前に削除することができます。また、データベース内のスペースを削除する必要はありません。クライアントコードで行うこともできます。

この場合、通常のEqualsを使用することができますし、少し効率的です。

+0

dbの制御権はありません。 dbから入力し、入力したパーツ番号に一致させます – Beginner

関連する問題