【问题标题】:Better way to check that multiple variables doesn't have any duplicated value检查多个变量是否没有任何重复值的更好方法
【发布时间】:2015-03-06 03:48:48
【问题描述】:

我有一些变量,例如这些字符串:

string option1 ,option2, option3, option4; 

具有未知值。看来我可以通过这种方式检查它们中没有两个是相等的(没有重复):

if(option1 !=option2 && option1 != option3 &&...)
    //

但是如果我有很多变量,那我怎么做才不会像上面那样难看?

【问题讨论】:

  • 您可以创建扩展方法,并使用流畅的界面使其看起来更好,但不能。条件/检查的数量保持不变。
  • 如果您有很多变量但需要一起使用它们,您是否考虑过使用数组来代替?
  • @LasseV.Karlsen 你是对的,但在这里我的意思是不需要那么多变量数组;即这里 op1-op4 是我的问题表上 Q 的答案,它需要 c(4,2) 检查这有点难看。无论如何我学习如何在数组上查找重复项! :) 感谢您的通知。

标签: c# .net conditional-statements


【解决方案1】:

我可能会为此使用 LINQ,这当然需要将它们放入一个集合中。

public static bool HasDuplicates<T>(params T[] arr)
{
    return arr.Distinct().Count() != arr.Length;
}

当然,你可以这样称呼它:

if(!HasDuplicates(option1 ,option2, option3, option4))
{
    // Code
}

可能有更好的方法来进行比较,但这似乎很简单,如果没有别的,这是一个很好的起点。

另外,我不完全确定您的意思是要确保 option1 不等于任何其他人,或者没有任何重复项。我选择了更复杂的后一种情况,但如果我猜错了,你可以很容易地用Contains 运行类似的表达式。

【讨论】:

  • 好的。我不想有任何重复。
【解决方案2】:

你可以得到另一个有不同的数组

int[] s = { 1, 2, 3, 3, 4};
int[] q = s.Distinct().ToArray();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多