0

検索インデックスを作成しています。かなりうまく機能しましたが、同等のタイプにするためにTextBox.Textの文字列をintに変換するのに問題があるため、ItemID(アイテム番号)を検索に組み込むことができません。

var q = (from t0 in db.Item
         join t1 in db.Categories on t0.CategoryID equals t1.CategoryID
         join t2 in db.Divisions on t0.DivisionID equals t2.DivisionID
         where t0.DivisionID == DDLInt &&
         //Contains
         (t0.ItemName.Contains(txtSearch.Text.Trim()) ||
         t0.Email.Contains(txtSearch.Text.Trim()) ||
         t0.Description.Contains(txtSearch.Text.Trim()) ||
         t0.Phone.Contains(txtSearch.Text.Trim()) ||
         t0.ItemID.Equals(txtSearch.Text.Trim())) 
               // ^ This is the line where  
               //   it breaks because it is not a comparable type
         group t0 by new
         {

変換または解析する方法がわかりませんが、検索は正しく機能します。

4

5 に答える 5

3

を解析しstringint

t0.ItemID.Equals(Convert.ToInt32(txtSearch.Text.Trim()))) 

またはを:に変換intstringます

t0.ItemID.ToString().Equals(txtSearch.Text.Trim())) 

または、クエリから変換を取り出します。

int searchID;
if !int.TryParse(txtSearch.Text.Trim(),out searchID)
    searchID = -1;  // set to an invalid ID

var q = (from t0 in db.Item
     <snip>
     t0.ItemID.Equals(searchID)) 
于 2012-10-25T15:18:28.350 に答える
1

単純に次のようになります。

t0.ItemID.Equals(int.Parse(txtSearch.Text.Trim()))
于 2012-10-25T15:18:28.503 に答える
1
t0.ItemID.Equals(Int32.Parse(txtSearch.Text.Trim());
于 2012-10-25T15:18:38.873 に答える
1

有効な整数であることが確実な場合は、を使用できますint.Parse。それが有効な整数であるかどうかわからない場合は、使用でき、有効でない場合int.TryParseはユーザーに再入力を求めることができます。

通常、クエリを作成する前にすべての項目を検証するのが最善です(数値が数値、日付が日付、選択肢の値が有効な選択肢であることなどを確認してください)。何かが無効な場合は、最初にチェックすることでデータベースクエリを保存できます。

于 2012-10-25T15:18:48.270 に答える
1

int.Parseを使用できます

t0.ItemName.Contains(txtSearch.Text.Trim())

だろう

int.Parse(t0.ItemName.Contains(txtSearch.Text.Trim()))
于 2012-10-25T15:19:21.647 に答える