在基数 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 指出了上述问题的一个几乎确定的问题 - 您的文本框可用于搜索字符串字段 数字字段 - 其中如果将文本框解析为整数失败,您可能不想抛出异常。

如果是这种情况,您可能需要两件事

  1. 一个布尔值,表示您是否真的有一个数字
  2. 解析为数字的字符串值

例如

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 查找结果。