在基数 Entity Framework 中查找整数
Find int in base Entity Framework
这是我的查询:
var caly = from m in stan.magazyn
from g in stan.gdzie
from p in stan.pracownik
where m.Gdzie_Jest == g.ID_Miasta
where m.Kto_Wprowadzil == p.ID_Pracownika
where m.Gdzie_Jest == combobox_miasto
orderby m.Marka, m.Model, m.IMEI
where (m.ID.Contains(textBox13.Text))
|| (m.Marka.Contains(textBox13.Text))
|| (m.Model.Contains(textBox13.Text))
|| (m.IMEI.Contains(textBox13.Text))
|| (m.Kolor.Contains(textBox13.Text))
|| (m.Od_Kogo.Contains(textBox13.Text))
|| (m.Info.Contains(textBox13.Text))
select new { m.ID, m.Marka, m.Model, m.IMEI, m.Kolor, m.Od_Kogo, Sklep = g.Nazwa, m.Data_Wprowadzenia, m.Cena_Kupna, Dodał = p.login, m.Info };
如果我能做到这一点:(m.Marka.Contains(textBox13.Text))
接下来,没关系,因为在我的基础上这是字符串。当我想要搜索 ID (m.ID.Contains(textBox13.Text))
时遇到问题,因为这是整数。在这种情况下我必须做什么?
您需要将 textBox13.Text
的值转换为字符串。理想情况下,您会使用 int.TryParse
:
int value = 0;
if(!int.TryParse(textBox13.Text,out value))
throw new InvalidOperationException("textBox13 must contain a number");
然后
(m.ID.Contains(value))
(旁注:给您的文本框起有意义的名字 - textBox13
毫无意义!)
编辑:感谢@CodeCaster 指出了上述问题的一个几乎确定的问题 - 您的文本框可用于搜索字符串字段 或 数字字段 - 其中如果将文本框解析为整数失败,您可能不想抛出异常。
如果是这种情况,您可能需要两件事
- 一个布尔值,表示您是否真的有一个数字
- 解析为数字的字符串值
例如
int value = 0;
bool isNumericalSearch = int.TryParse(textBox13.Text,out value));
然后可以将这些值用作搜索查询的一部分:
where (isNumericalSearch && m.ID == value)
|| ((m.Marka.Contains(textBox13.Text))
|| (m.Model.Contains(textBox13.Text))
|| (m.IMEI.Contains(textBox13.Text))
|| (m.Kolor.Contains(textBox13.Text))
|| (m.Od_Kogo.Contains(textBox13.Text))
|| (m.Info.Contains(textBox13.Text)))
您可以使用 SqlFunction class 将您的 int
转换为 string
。
做类似的事情:
(SqlFunctions.StringConvert((double)m.ID)).Contains(textBox13.Text)
你只需要将输入值textBox13.Text
转换为一个int(我们称之为textBox13Integer
),然后你可以使用m.ID.Equals(textBox13Integer)
或m.ID == textBox13Integer
来通过 id 查找结果。
这是我的查询:
var caly = from m in stan.magazyn
from g in stan.gdzie
from p in stan.pracownik
where m.Gdzie_Jest == g.ID_Miasta
where m.Kto_Wprowadzil == p.ID_Pracownika
where m.Gdzie_Jest == combobox_miasto
orderby m.Marka, m.Model, m.IMEI
where (m.ID.Contains(textBox13.Text))
|| (m.Marka.Contains(textBox13.Text))
|| (m.Model.Contains(textBox13.Text))
|| (m.IMEI.Contains(textBox13.Text))
|| (m.Kolor.Contains(textBox13.Text))
|| (m.Od_Kogo.Contains(textBox13.Text))
|| (m.Info.Contains(textBox13.Text))
select new { m.ID, m.Marka, m.Model, m.IMEI, m.Kolor, m.Od_Kogo, Sklep = g.Nazwa, m.Data_Wprowadzenia, m.Cena_Kupna, Dodał = p.login, m.Info };
如果我能做到这一点:(m.Marka.Contains(textBox13.Text))
接下来,没关系,因为在我的基础上这是字符串。当我想要搜索 ID (m.ID.Contains(textBox13.Text))
时遇到问题,因为这是整数。在这种情况下我必须做什么?
您需要将 textBox13.Text
的值转换为字符串。理想情况下,您会使用 int.TryParse
:
int value = 0;
if(!int.TryParse(textBox13.Text,out value))
throw new InvalidOperationException("textBox13 must contain a number");
然后
(m.ID.Contains(value))
(旁注:给您的文本框起有意义的名字 - textBox13
毫无意义!)
编辑:感谢@CodeCaster 指出了上述问题的一个几乎确定的问题 - 您的文本框可用于搜索字符串字段 或 数字字段 - 其中如果将文本框解析为整数失败,您可能不想抛出异常。
如果是这种情况,您可能需要两件事
- 一个布尔值,表示您是否真的有一个数字
- 解析为数字的字符串值
例如
int value = 0;
bool isNumericalSearch = int.TryParse(textBox13.Text,out value));
然后可以将这些值用作搜索查询的一部分:
where (isNumericalSearch && m.ID == value)
|| ((m.Marka.Contains(textBox13.Text))
|| (m.Model.Contains(textBox13.Text))
|| (m.IMEI.Contains(textBox13.Text))
|| (m.Kolor.Contains(textBox13.Text))
|| (m.Od_Kogo.Contains(textBox13.Text))
|| (m.Info.Contains(textBox13.Text)))
您可以使用 SqlFunction class 将您的 int
转换为 string
。
做类似的事情:
(SqlFunctions.StringConvert((double)m.ID)).Contains(textBox13.Text)
你只需要将输入值textBox13.Text
转换为一个int(我们称之为textBox13Integer
),然后你可以使用m.ID.Equals(textBox13Integer)
或m.ID == textBox13Integer
来通过 id 查找结果。