2

それぞれがリレーションシップのコレクションを持つアイテムのコレクションがあります。アイテムが関係を持つことができるグループのリストがあります。

特定の関係を持つすべてのアイテムを見つけることができますが、どのグループとも関係がないすべてのアイテムを見つけたいと思います。

これを行うことで、グループのいずれかと関係があるアイテムを見つけることができます。

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

どのグループとも関係のないすべてのアイテムを見つけるにはどうすればよいですか?

4

5 に答える 5

6

メソッドの結果を否定してみましたContainsか?

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
于 2009-06-11T16:52:16.567 に答える
6

私はVBをそれほどよく覚えていませんが、単純な「Not」は機能するはずです。

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
于 2009-06-11T16:53:50.417 に答える
2

とにかくコレクションを生成している場合は、次のhaveGroupようにすることができます。

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

Dim haveNotGroup = items.Except(haveGroup).ToList
于 2009-06-11T16:58:04.320 に答える
2
Dim notHasGroup = items.Except(haveGroup)
于 2009-06-28T10:34:29.433 に答える
0
Dim listIds as List(of Integer) = (From g In cmdbGroups Select g.ID).ToList
Dim haveGroup = (From item In items _
    Where Not listIds.Contains(item.ID) 
    Select item.ID).ToList
于 2016-05-16T18:00:31.477 に答える