I want to compare two columns of two different Excel sheets and return the corresponding 3rd column value of 2nd excel sheet infront of corresponding matched rows of 1st excel sheet.
Hi @alamelu.b,
DT1.AsEnumerable().Where(Function(row) DT2.AsEnumerable().Where(function(r) r(“ColName”).ToString.Equals(row(“ColName”).ToString).Any).ToArray
Use assign activity and assign
outDT = TestDt2.Clone()
Assign :
outDT = (From R1 In TestDt1.AsEnumerable
From R2 In TestDt2.AsEnumerable
Where ((R1.Item(“SI.No”).ToString.Trim.Equals(R2.Item(“SI.No”).ToString.Trim) AndAlso (R1.Item(“Count”).ToString.Trim.Equals(R2.Item(“Count”).ToString.Trim))
Select R = outDT.Rows.Add((R1.ItemArray.Append(R2.Item(“Grade”).ToString).ToArray))).CopyToDataTable()
Please let us know if you face any challenges in implementation.
@alamelu.b
Your case can be matched to different approaches
Left Join (with the assumption on no duplicated S1.No values in dt 1
Assign activity
dtResult = Dt2.Clone
Assign activity:
dtResult =
(From d1 In dt1.AsEnumerable()
Group Join d2 In dt2.AsEnumerable()
On d1("S1.No").toString.Trim Equals d2("S1.No").toString.Trim Into gj= Group
From g In gj.DefaultIfEmpty
Let grd= If(isNothing(g), Nothing, g("Grade"))
Let ra = d1.ItemArray.Append(grd).toArray
Select r = dtResult.Rows.Add(ra)).CopyToDataTable
Match-Lookup
Assign activity
dtResult = Dt2.Clone
Assign activity:
dtResult =
(From d1 in dt1.AsEnumerable()
Let sno = d1("S1.No").toString.Trim
Let mtc= dt2.AsEnumerable.Where(Function (d2) d2("S1.No").toString.Trim.Equals(sno)).toList
Let grd = mtc.Select(Function (g) g("Grade")).DefaultIfEmpty(nothing).First()
Let ra = d1.ItemArray.Append(grd).toArray
Select r = dtResult.Rows.Add(ra)).CopyToDataTable
Probably a ‘)’ is missing. I have corrected expression, please use the below :
(From R1 In TestDt.AsEnumerable
From R2 In TestDt2.AsEnumerable
Where ((R1.Item(“SI.No”).ToString.Trim.Equals(R2.Item(“SI.No”).ToString.Trim)) AndAlso R1.Item(“Count”).ToString.Trim.Equals(R2.Item(“Count”).ToString.Trim))
Select R = NewDt.Rows.Add((R1.ItemArray.Append(R2.Item(“Grade”).ToString).ToArray))).CopyToDataTable()