使用多个或涉及相同变量的语句简化if语句?

时间:2013-03-12 16:16:13

标签: c#

假设我有一个if语句:

if (a > x || b > x || c > x || d > x) {}

假设它总是涉及相同的重复变量(在这种情况下为x)和相同的操作,但所有使用之间的操作并不相同。例如,另一个if语句可以使用:

if (x.Contains(a) || x.Contains(b) || x.Contains(c) || x.Contains(d)) {}

有没有办法在C#中简化这些if语句,所以我们不会一遍又一遍地输入同样的东西?我不想为了这个实例而调用额外的函数。

3 个答案:

答案 0 :(得分:7)

您可以使用LINQ,但如果您只有四个条件,则认为它不是非常有用:

if (new[] {a,b,c,d}.Any(current => current > x))

if (new[] {a,b,c,d}.Any(current => x.Contains(current)))

答案 1 :(得分:2)

您可以将Linq的Any方法同时用于||多个条件。

var tests = new int[] { a, b, c, d };

if (tests.Any(y => y > x)) { }

if (tests.Any(y => x.Contains(y))) { }

顺便说一句,如果您需要有多个条件&& - 您可以使用All

if (tests.All(y => y > x)) { }

if (tests.All(y => x.Contains(y))) { }

答案 2 :(得分:1)

没有什么可以阻止你自己进行扩展以使事情变得更清晰;

public static class LinqExtension
{
    public static bool ContainsAny<TInput>(this IEnumerable<TInput> @this, IList<TInput> items)
    {
        return @this.Any(items.Contains);
    }
}