I have a potential solution, but I need to ensure the design first.
Do you want a design that returns the records or the strings stating the results?

I'm a little confused.
abc is NOT greater than pqr.

oh...my bad...sorry...
disregard the pqr for abc...

I have a potential solution, but I need to ensure the design first.
Do you want a design that returns the records or the strings stating the results?

yes please....

Please let me know if this is overkill.
Also, I used a class to hold the data.
If the data comes from a specific source, you could easily change this:

Imports System.Linq
Imports System.Collections.Generic

Module Module1
   Public Class CTable
      Public name As String
      Public points As Integer

      Public Sub New()
         name = ""
         points = 0
      End Sub

      Public Sub New(ByVal name As String, ByVal points As Integer)
         Me.name = name
         Me.points = points
      End Sub
   End Class

   Sub Main()

      Dim lstTable1 As New List(Of CTable) From
      {
         New CTable("abc", 10011),
         New CTable("def", 10022),
         New CTable("ghi", 10033)
      }

      Dim lstTable2 As New List(Of CTable) From
      {
         New CTable("jkl", 10000),
         New CTable("mno", 15550),
         New CTable("pqr", 10029)
      }

      Dim lst_strResult As List(Of String) =
      (
         From s In
         (
            From rowA In lstTable1
            From rowB In lstTable2
            Where rowB.points < rowA.points
            Select New With {.key = rowA.name, .value = rowB.name}
         ).ToLookup(Function(k) k.key, Function(v) v.value)
         Select (s.Key & " is greater than " & String.Join(" and ", s.ToArray()))
      ).ToList()

      lst_strResult.ForEach(Sub(s) Console.WriteLine(s))
   End Sub
End Module

Please let me know if this is overkill.
Also, I used a class to hold the data.
If the data comes from a specific source, you could easily change this:

Imports System.Linq
Imports System.Collections.Generic

Module Module1
   Public Class CTable
      Public name As String
      Public points As Integer

      Public Sub New()
         name = ""
         points = 0
      End Sub

      Public Sub New(ByVal name As String, ByVal points As Integer)
         Me.name = name
         Me.points = points
      End Sub
   End Class

   Sub Main()

      Dim lstTable1 As New List(Of CTable) From
      {
         New CTable("abc", 10011),
         New CTable("def", 10022),
         New CTable("ghi", 10033)
      }

      Dim lstTable2 As New List(Of CTable) From
      {
         New CTable("jkl", 10000),
         New CTable("mno", 15550),
         New CTable("pqr", 10029)
      }

      Dim lst_strResult As List(Of String) =
      (
         From s In
         (
            From rowA In lstTable1
            From rowB In lstTable2
            Where rowB.points < rowA.points
            Select New With {.key = rowA.name, .value = rowB.name}
         ).ToLookup(Function(k) k.key, Function(v) v.value)
         Select (s.Key & " is greater than " & String.Join(" and ", s.ToArray()))
      ).ToList()

      lst_strResult.ForEach(Sub(s) Console.WriteLine(s))
   End Sub
End Module

please see my another post with gis

This article has been dead for over six months. Start a new discussion instead.