2011-01-25 52 views
1

有沒有辦法找到DataTable中使用方法的價值選擇: items.Select("Number like '%10%'"); 問題與DataTable.Select

但數類型是int,而這個代碼不`噸工作...

+0

你想匹配任何值,包括10 ?所以12312310324235,10 100,234324510都會匹配,但是23432451不會? – 2011-01-25 08:53:34

回答

1

看T-SQL CAST and CONVERT的功能,他們可能會幫助你。基本上,在您的查詢,使用CASTCONVERT(不知道你是最適合)修改int進入,你可以執行LIKE的字符串。

+0

謝謝,我只是寫新的SQL查詢,其中場「數字」的轉換VARCHAR,然後我把它放在數據表 – mystdeim 2011-01-25 10:55:46

0

如果你真的想有這樣的行爲,那麼這將是更好只需添加到像「NumberText」與String類型,將相同的值存儲爲列數的表額外計算列。然後,你可以執行你的表達:items.Select("NumberText like '%10%'");

0

您可以使用LINQ方式如下:

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

,或者如果數字實際上是一個數字:

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

如果沒記錯,你需要逃脫單引號加倍。即:

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

您可以使用數據視圖DataTable中

DataView dv = new DataView(dtSample); 
dv.RowFilter = "Number like '%10%'"; 
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.