C# 使用多个或'简化if语句;它涉及同一个变量?

C# 使用多个或'简化if语句;它涉及同一个变量?,c#,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语句,这样我们就不会反复输入相同的内容?我不希望为这个实例调用

假设我有这样一个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语句,这样我们就不会反复输入相同的内容?我不希望为这个实例调用额外的函数。

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

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

您可以使用Linq的方法将多个条件一起
|

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

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

if (tests.Any(y => x.Contains(y))) { }
顺便说一下,如果您需要将多个条件
&&
-ed放在一起,您可以使用


没有什么能阻止你自己扩展,让事情变得更清楚

public static class LinqExtension
{
    public static bool ContainsAny<TInput>(this IEnumerable<TInput> @this, IList<TInput> items)
    {
        return @this.Any(items.Contains);
    }
}
公共静态类LinqExtension
{
公共静态bool ContainsAny(this IEnumerable@this,IList项)
{
返回@this.Any(items.Contains);
}
}

不,没有出路……逻辑就是这样工作的……我在想,可能会有一些可枚举的接口,需要一个操作来对所有元素或类似的东西进行比较。哦,还有“不使用函数调用”-我不是说你的解决方案不能使用lambdas或其他在后台调用函数的技术-我只是不想在我的代码中为此编写单独的函数。同意。在可读性方面,使用LINQ肯定会有一些损失。因此,当必须评估少量条件时,我认为
if..or..
语法是更合适的选择。当您的逻辑变得过于繁琐而无法阅读时,请尝试LINQ实现;事实上,我们确实有超过4个,但我仍然同意这可能不是最好的方式:)谢谢你的解决方案/意见。
if (tests.All(y => y > x)) { }

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