[英]Cannot convert type 'int' to 'string' in linq to sql
[英]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.