【发布时间】:2013-06-11 16:14:49
【问题描述】:
希望找出是否有一种简单的方法可以检查列表是否仅包含某些列表值。
例如,如果我有一个可能随机包含不同整数 1-10(即 1、3、7 或 2、3、4、6、8、9)的 int 列表,并且我想检查该列表是否仅包含 int 1 和/或 5。1 或 5 或 1,5 将返回 true,其他任何内容都将返回 false。
这实际上是针对 MVC 项目的,是一个字符串列表。根据条件,我构建了一个字符串列表,并希望检查 2 个特定字符串中的 1 个或两个,但列表中不存在其他字符串。
现在我获取列表并检查它是否包含 2 个字符串中的每一个,如果它们存在则删除它们。然后我可以计算列表,如果 > 0 我知道 1 或两个字符串不是列表中的唯一值。这感觉非常hackish,我认为有更好的方法来做到这一点。同样在将来,如果我的两个字符串是另一个动态的字符串列表,那么有一个简单的方法会很好,而不是必须 foreach 两个列表的每个字符串如果存在于另一个列表中,然后从一个列表中删除它们,然后我可以计算列表来获取我需要的布尔值。
希望有类似于 .Contains(T Item) 之类的东西,例如 .OnlyContains(T Item or IEnumerable) 但还没有找到类似的东西。
谢谢。
【问题讨论】:
-
如果只检查 1 和 5,为什么列表 1、3、7 会为真?它不仅包含 1 或 5。
-
由于您的列表仅包含不同的
int,您可能希望使用SortedSet<int>而不是List<int>。这样做的好处是“集合”有IsSubsetOf和IsSupersetOf这样的方法。 -
你的权利,我写的例子完全错误,现在在帖子中修复它们。
标签: c# list ienumerable contains