Hi @Mansour_Dalir ,
Here is an example with dataview and linq.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim newRowData() As String = {"CABLE", "MV", "1x240", "Air Building1"}
Dim dataView As New DataView(MyDataTable)
dataView.RowFilter = GetRowFilterExpression(newRowData)
Dim isDuplicate As Boolean = dataView.Count > 0
If Not isDuplicate Then
MyDataTable.Rows.Add(newRowData)
Console.WriteLine("New row added.")
Else
Console.WriteLine("New row duplicate existing rows.")
End If
End Sub
Function GetRowFilterExpression(newRowData() As String) As String
Dim expressions As New List(Of String)
For Each columnName As String In MyDataTable.Columns.Cast(Of DataColumn)().Select(Function(col) col.ColumnName)
expressions.Add(String.Format("{0} = '{1}'", columnName, newRowData(Array.IndexOf(MyDataTable.Columns.Cast(Of DataColumn)().Select(Function(col) col.ColumnName).ToArray(), columnName))))
Next
Return String.Join(" AND ", expressions)
End Function
If the amount of data is too large, the operation of in-memory data will always take more time, in which case you may consider using a database system.