HOW TO REMOVE FROM ONE LIST ALL THE ITEMS IN ANOTHER?

Goti Bandu

Total Post:119

Points:835
Posted by  Goti Bandu
VB.Net 
 2180  View(s)
Ratings:
Rate this:
Hi,

I'm reading a set of rows from a remote database, and a similar set from a local database, and then using RemoveAll to get rid of remote rows that are already present locally...

remote_events = (From a In remote.Events
                          Where ...etc...).ToList
local_events = (From a In local.Events
                            Where ...etc...).ToList
remote_events.RemoveAll(Function (ByVal event_row As Remote_Event)
    (From a In local_events Where a.Identifier = event_row.Identifier).Count > 0)

but this doesn't seem right to me. I don't think I should be counting things when all I really need to do is check whether a match exists. I've tried various usages of IsDBNull and IsNothing but get nonsense. I can't use .Except (as suggested here) because the list elements are not the same type.

Is there a better way of doing this?

Thanks in advance for any recommendations or solutions.
  1. AVADHESH PATEL

    Post:604

    Points:4228
    Re: How to remove from one list all the items in another?

    Hi Goti,


    You can compare the Identifier as following line of code

        Remote_Events = (From r_evt In Remote_Events
                        Where Not ((From l_evt In Local_Events Select l_evt.Identifier).Contains(r_evt.Identifier))
                        Select r_evt).ToList

    I hope this helps and at least moves you in the right direction.

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!