Linq使用字符串查询int

时间:2009-07-27 12:40:12

标签: linq linq-to-entities

我正在尝试使用Linq to Entities查询表的唯一引用号。 ID通过文本框提供,因此我的代码中包含一个字符串。显然,在数据库表中,该字段是一个整数,所以我先尝试使用.ToString,然后尝试使用.contains,就像使用varchar()一样。这似乎不起作用,错误来自.ToString方法。

你是怎么做到的?我已经尝试将文本框内容转换为整数,但这意味着用户必须输入完全的int而不是部分数字。

非常感谢

2 个答案:

答案 0 :(得分:1)

我不确定为什么toString不适合你。我试过这个方法。两人都回答了答案:

List<int> ids = new List<int>() { 111, 211, 311, 422, 522, 622, 733, 833, 933 };
string query = "11";

var result = ids.Where(id => id.ToString().Contains(query));
var result2 = ids.ConvertAll<string>(i => i.ToString()).Where(id => id.Contains(query));
// Both return the first three items

答案 1 :(得分:-1)

int value;
if(int.TryParse(someTextString,out value))
{
    //do work here using integer comparision with 'value'
}

“部分”价值是什么意思?无论您是“添加”到用户提供的字符串,您仍然可以在解析值之前执行此操作。你的解释不是很清楚。

如果您确实尝试进行通配符搜索,则对于DB int值使用Linq-to-entities将失败。我怀疑lte会对sometable.intvalue.ToString()。Contains()有所了解。在这种情况下,您可能需要执行一些客户端数学来确定需要检索的范围,或者编写在SQL端执行搜索的存储过程。