Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LINQ to Objects - Does Not Contain?

I have a collection of Items that each have a collection of Relationships. I have a list of Groups that Items can have Relationships with.

I can find all the Items that have a particular relationship but I now want to find all the Items that don't have a Relationship with any of my Groups.

I can find the Items that have a relationship with any of the Groups by doing this:

Dim groupIds as List(of Integer) = (From g In cmdbGroups Select g.ID).ToList
Dim haveGroup = (From item In items _
                 Where item.Relationships.Any(Function(r) groupIds.Contains(r.TargetID)) _
                 Select item).ToList

How can I find all the items that do not have a relationship with any of the groups?

like image 696
Nick Avatar asked Dec 21 '25 02:12

Nick


2 Answers

I don't remember VB all that well, but a simple "Not" should work.

Dim groupIds as List(of Integer) = (From g In cmdbGroups Select g.ID).ToList
Dim haveGroup = (From item In items _
             Where Not item.Relationships.Any(Function(r) groupIds.Contains(r.TargetID)) _
             Select item).ToList
like image 132
StriplingWarrior Avatar answered Dec 22 '25 17:12

StriplingWarrior


Have you tried negating the results of the Contains method?

Dim groupIds as List(of Integer) = (From g In cmdbGroups Select g.ID).ToList
Dim haveGroup = (From item In items _
                 Where item.Relationships.Any(Function(r) Not groupIds.Contains(r.TargetID)) _
                 Select item).ToList
like image 39
Andrew Hare Avatar answered Dec 22 '25 17:12

Andrew Hare



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!