Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在DataTable中查找值_C#_Datatable - Fatal编程技术网

C# 在DataTable中查找值

C# 在DataTable中查找值,c#,datatable,C#,Datatable,有没有办法在C#中的DataTable中找到一个值而不进行逐行操作 该值可以是datatable中(行[columnName].value的子字符串,用逗号分隔)单元格的一部分,并且该值可以出现在该行的任何一列中 DataTable或DataSet对象将具有一个Select方法,该方法将根据作为参数传入的查询返回结果的DataRow数组 根据您的需求,您的filterexpression必须具有一定的通用性,才能实现这一功能 myDataTable.Select("columnName1 lik

有没有办法在C#中的DataTable中找到一个值而不进行逐行操作


该值可以是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希望避免这种情况