C# 在DataTable中查找值
有没有办法在C#中的DataTable中找到一个值而不进行逐行操作C# 在DataTable中查找值,c#,datatable,C#,Datatable,有没有办法在C#中的DataTable中找到一个值而不进行逐行操作 该值可以是datatable中(行[columnName].value的子字符串,用逗号分隔)单元格的一部分,并且该值可以出现在该行的任何一列中 DataTable或DataSet对象将具有一个Select方法,该方法将根据作为参数传入的查询返回结果的DataRow数组 根据您的需求,您的filterexpression必须具有一定的通用性,才能实现这一功能 myDataTable.Select("columnName1 lik
该值可以是datatable中(行[columnName].value的子字符串,用逗号分隔)单元格的一部分,并且该值可以出现在该行的任何一列中 DataTable或DataSet对象将具有一个Select方法,该方法将根据作为参数传入的查询返回结果的DataRow数组 根据您的需求,您的filterexpression必须具有一定的通用性,才能实现这一功能
myDataTable.Select("columnName1 like '%" + value + "%'");
也许您可以按如下可能的列筛选行:
DataRow[] filteredRows =
datatable.Select(string.Format("{0} LIKE '%{1}%'", columnName, value));
顺便说一句,没有内置的搜索所有列的功能。只能对主键使用
Find
<代码>选择需要指定的列。您也许可以使用LINQ,但最终这只是做同样的循环。也许你自己把它打开?至少它是可读的。这个问题在2009年提出,但我想分享我的代码:
Public Function RowSearch(ByVal dttable As DataTable, ByVal searchcolumns As String()) As DataTable
Dim x As Integer
Dim y As Integer
Dim bln As Boolean
Dim dttable2 As New DataTable
For x = 0 To dttable.Columns.Count - 1
dttable2.Columns.Add(dttable.Columns(x).ColumnName)
Next
For x = 0 To dttable.Rows.Count - 1
For y = 0 To searchcolumns.Length - 1
If String.IsNullOrEmpty(searchcolumns(y)) = False Then
If searchcolumns(y) = CStr(dttable.Rows(x)(y + 1) & "") & "" Then
bln = True
Else
bln = False
Exit For
End If
End If
Next
If bln = True Then
dttable2.Rows.Add(dttable.Rows(x).ItemArray)
End If
Next
Return dttable2
End Function
如何使用linq执行上述语法。然后如何将此数组用作组合框的数据源?如果需要精确值:DataRow[]filteredRow=datatable.Select(“ColumnName='value');这是一个C#问题,不是VB,而是行和列上的循环,OP希望避免这种情况