我正在制作搜索索引。我得到它工作得很好,但我不能在我的搜索中包含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
{
我不确定如何转换或解析它仍然可以正常搜索。
答案 0 :(得分:3)
将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))
答案 1 :(得分:1)
应该只是:
t0.ItemID.Equals(int.Parse(txtSearch.Text.Trim()))
答案 2 :(得分:1)
t0.ItemID.Equals(Int32.Parse(txtSearch.Text.Trim());
答案 3 :(得分:1)
如果您确定它是有效整数,则可以使用int.Parse
。如果您不确定它是否是有效整数,您可以使用int.TryParse
并可能提示用户重新输入,如果它无效。
通常最好在构建查询之前验证所有项目(检查数字是数字,日期是日期,选择值是有效选择等)。如果某些内容无效,您可以通过在开始时检查它来为自己保存数据库查询。
答案 4 :(得分:1)
您可以使用int.Parse
t0.ItemName.Contains(txtSearch.Text.Trim())
将
int.Parse(t0.ItemName.Contains(txtSearch.Text.Trim()))