DataTable.Select的问题

时间:2011-01-25 08:44:55

标签: c# datatable

有没有办法在DataTable中找到一个值使用方法选择: items.Select("Number like '%10%'");

但Number类型是Int,这段代码不起作用......

6 个答案:

答案 0 :(得分:1)

查看T-SQL CAST and CONVERT函数,它们可能会对您有所帮助。基本上,在您的查询中,使用CASTCONVERT(不确定哪个最适合您)将int更改为可以执行LIKE的字符串。

答案 1 :(得分:0)

如果你真的想要有这样的行为,那么最好只是在你的表中添加类似字符串的“N​​umberText”附加计算列,它将存储与列号相同的值。然后,您可以执行表达式:items.Select("NumberText like '%10%'");

答案 2 :(得分:0)

您可以通过以下方式使用linq:

var matchingRows =
    from item in items.AsEnumerable()
    where item.Field<string>("Number").Contains("10")
    select item;

或者如果Number实际上是一个数字:

var matchingRows =
    from item in items.AsEnumerable()
    where item.Field<double>("Number").ToString().Contains("10")
    select item;

答案 3 :(得分:0)

如果记忆服务,你需要通过加倍来逃避单一报价。即:

items.Select("Number like ''%10%''");

答案 4 :(得分:0)

您可以使用DataView过滤DataTable中的值

DataView dv = new DataView(dtSample);
dv.RowFilter = "Number like '%10%'";

答案 5 :(得分:0)

对于将来阅读的人来说,这可能有所帮助:

DataRow[] matchingRows = a.Select("Convert(Age, 'System.String') like '2%'   "); // cut and paste from my code

所以在你的代码中它将是:

DataRow[] matchingRows = a.Select("Convert(Number, 'System.String') like '10%' "); // where Number is the name of your column.