我想首先解释一下我的情况:
我有一个DataTable
,显示在DataGridView
中。我还有一个Textbox
来搜索特定列中的值。对于日期值,这看起来像这样(searchInDt是我的DataTable,getSelectedItem是列名,searchBox是TextBox)
searchInDt.CaseSensitive = false;
var rowSources = (from myRow in searchInDt
.AsEnumerable()
.Where(myRow => myRow.Field<DateTime>(getSelectedItem)
.ToString()
.StartsWith(searchBox.Text))
select myRow);
if (rowSources.Any())
dataGridView1.DataSource = rowSources.CopyToDataTable();
所以这有效但现在我有一个CheckBox
,我可以在月份和年份之间进行选择。如果我想从DateTime
值(月份)或位置6(年份)的位置3进行搜索,该怎么办?
我试过Skip,但这不起作用。即使尝试EndsWith
(这不是我正在寻找的那个)也行不通。
答案 0 :(得分:3)
您可以直接查看string
字段的DateTime
/ Month
属性,而不是检查Year
的{{1}}值。
根据CheckBox选择设置DateTime
的值,然后
isMonth
在旁注中,您应该使用var isMonth = <true if Month is selected, false if Yaer is selected>;
var query = int.Parse(searchBox.Text);
var rowSources = searchInDt.AsEnumerable()
.Where(row => isMonth ? row.Field<DateTime>(getSelectedItem).Month == query
: row.Field<DateTime>(getSelectedItem).Year == query);
,因为通常RadioButton
用于选择多个值,并且您不希望用户同时选择月份和年份。