For each row of a data table

datatable
excel
uiautomation
robot
activities

#1

Hi all,

How can I do a for each row activity that only works for a row that contains specific word/character?

Thanks!


#2

HI @jasperlzx,

Use for each row activity
use if Condition
String.join(",",row.ItemArray).Contains("yourvalue")

if true do your operations else leave it go to next record.

Regards,
Arivu


#3

Hello,

Can you be a bit more specific? The word/character can be in any column or a specific column?

If it’s a specific column, you can put an If activity inside the For Each Row activity and put the following condition:

row.Item("ColumnName").ToString.Contains("word")

If it’s any column, inside the For Each Row you can put a For Each activity and iterate through datatable.Columns and inside this loop put the If activity with the following condition:

row.Item(column.ColumnName).ToString.Contains("word")

, where ‘column’ is the current iteration of the datatable.Columns loop.

If you want to extract all rows that meet this condition and only iterate through these for further processing, you can use LINQ to obtain the rows:

datatable.AsEnumerable().Where(Function(x) x.Item("ColumnName").ToString.Contains("word")).ToArray


#4

hi, this does not work.


#5

hi, its usually in column A. its every 6/7 row after one other but I do not have column header


#6

You can also give it the column index if you don’t know the column name. If it’s the first column then the index is 0:

row.Item(0).ToString.Contains(“word”)


#7

@jasperlzx If you are aware of which column you need to look into, you can filter your data table and get only rows that have required value and then loop through only those rows for further processing.

filteredRows = yourDataTable.Select("[Column_Name] like ‘%" + Character/WordToCheck + "%’")

user for each to loop through filtered rows


#8

can U show an example? I don’t have a column name as the column also contains data that are not related.


#9

Here’s an example: ExcelWIthoutHeader.zip (8.3 KB)


#10

@jasperlzx Is its possible to share the data in excel and specify what you are looking in that?


#11

sorry I can’t share the file. I just need to location the word, “employee name”, and take the 6 rows till the next “employee name”. thanks.


#12

@jasperlzx Here you go SearchDataTable.zip (7.8 KB)


#13

Hi some one help me to do the same for a number instead a word for the above case. i used filter wizard and able to achieve this. but i would like to try with For each and if. Example : student record. specific column name : Age.
for all the rows where age is more than 10 , then a specific sequence need to get executed.

I created variable as “Age” data type string. then if condition didn’t allow to use Age>10. since 10 is different data type.

If i use int32 or double same error while comparing in IF


#14

if you are trying to compare within the for each loop, try checking
(Convert.ToInt32(row(“Age”).ToString) > 10)