簡體   English   中英

Linq到實體查詢無法將Int轉換為String

[英]Linq to Entitites query cannot convert Int to String

我正在搜索索引。 我的工作效果很好,但我無法在搜索中加入ItemID(項目編號),因為我無法將TextBox.Text中的String轉換為int以便使其成為可比較的類型。

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
         {

我不確定如何轉換或解析它,仍然可以正常進行搜索。

要么將string解析為一個int

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

或將int轉換為string

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)) 

應該只是:

t0.ItemID.Equals(int.Parse(txtSearch.Text.Trim()))
t0.ItemID.Equals(Int32.Parse(txtSearch.Text.Trim());

如果確定它將是一個有效的整數,則可以使用int.Parse 如果不確定它是否為有效整數,則可以使用int.TryParse並可能提示用戶重新輸入無效的整數。

通常最好在構建查詢之前驗證所有項目(檢查數字是數字,日期是日期,選擇值是有效選擇,等等)。 如果某些內容無效,則可以通過在開始時進行檢查來保存自己的數據庫查詢。

您可以使用int.Parse

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

將會

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM