多参数精确匹配的C#字符串方法

多参数精确匹配的C#字符串方法,c#,C#,是否有一种标准的字符串方法可以采用多个参数进行精确比较 T-SQL中的等价物将是in('dog','cat',…) 例如,如果有一个名为EqualToAny()的方法,那么下面的代码应该返回false string s="catfish"; if (s.EqualToAny("dog", "cat", "human", "dolphin")) return true; else return false; 您可以使用LinqAny()方法实现这一点 string input = "

是否有一种标准的字符串方法可以采用多个参数进行精确比较

T-SQL中的等价物将是in('dog','cat',…)

例如,如果有一个名为EqualToAny()的方法,那么下面的代码应该返回false

string s="catfish";
if (s.EqualToAny("dog", "cat", "human", "dolphin"))
   return true;
else
   return false;

您可以使用Linq
Any()
方法实现这一点

string input = "catfish";
var mammals = new [] {"dog", "cat", "human", "dolphin"};
var result = mammals.Any(v => v == input);
结果
对于
“鲶鱼”
将为
,对于
“猫”
将为

您还可以将其包装到字符串的扩展方法中:

public static bool EqualsAny(this string str, IEnumerable<string> validStrings) {
    return validStrings.Any(v => v == str);
}

var result = input.EqualsAny(mammals);
public static bool EqualsAny(此字符串str,IEnumerable validString){
返回validString.Any(v=>v==str);
}
var结果=输入。相等(哺乳动物);

您需要同样的

    // string extension method 
    public static bool EqualsAny(this string source, params  string[] prms)
    {
        return prms.Contains(source);
    }

所以鲶鱼应该是假的没有什么意义。提供清晰的输入和所需的输出。您的意思是,您希望
new[]{“dog”,“cat”,“human”}而不是
s==“dog”| | | s==“cat”| s==“human”
包含
?@HenkHolterman我读得越多,就越想让下面的代码为哺乳动物返回true,但ContainsAny返回true也不是很清楚。为什么OP没有任何输入??是时候结束了。问题还不清楚,但实际上可能是OP想要更像哺乳动物的东西。任何(v=>input.Contains(v)),但似乎有一种愿望,那就是只有在有“我有一只猫”这样的词边界时,“猫”才匹配,而不是像“我吃鲶鱼”这样的词。看起来OP正在查找字符串对象上的方法,而不是集合上的方法。现在根据编辑,这是正确的,但您当然可以只执行
操作。Contains(input)
。是的,
Contains
也可以工作,如果我们不需要任何奇特的字符串比较(例如
v=>v.Equals(str,StringComparison.ordinallingorecase)
)谢谢,这正是我想要的。我只是希望已经有一种方法可以做到这一点。@userSteve——我想指出,你参加这个论坛失败得很惨,因为所有试图澄清你的问题的努力都没有得到你的回答。考虑到有那么多人试图帮助你,这是非常令人沮丧的完全被忽略。@rory.ap我同意我最初的问题本可以更好地形成,我很高兴有这么多的回复这么快,但这真的只是几分钟的问题!这不像是过去的日子了!@userSteve——好吧,这就是这个网站的运作方式。如果你没有时间澄清你的问题,它会被否决并被投票很快就关闭了,然后就被忘记了。我不建议你发帖然后走开。只有当你准备好坐在那里回复的时候才发帖。