完成带有字符串和字符串数组的if语句

时间:2010-04-05 17:16:34

标签: c# asp.net .net-3.5

我有一个包含3个变量的页面。它们看起来像这样:

String[] Headers = new String[] { "Max Width", "Max Length", "Max Height" };
String currentHeader = (String)HttpContext.Current.Request.QueryString["ItemHas"] ?? "";
String checkString = (String)HttpContext.Current.Request.QueryString["ItemIn"] ?? "";

checkString是由“|”分隔的标题列表。

检查我的currentHeader是否在我的Headers数组和checkString字符串中的最简单方法是什么?我可以做到但不少于20行代码。这似乎不是最佳解决方案。

5 个答案:

答案 0 :(得分:5)

checkString.Split('|').Contains(currentHeader) && Headers.Contains(currentHeader)

使用LINQ。我误解了什么吗?

答案 1 :(得分:1)

if (!string.IsNullOrEmpty(currentHeader) && Headers.Contains(currentHeader) && checkString.Split('|').Contains(currentHeader))

答案 2 :(得分:1)

编写一个快速的实用方法:

private bool IsInHeader(string[] _headers, string _findme)
{
    if (_headers == null || _findme == null) return false;
    foreach (string s in _headers)
    {
        if (_findme == s) return true;
    }
    return false;
}

答案 3 :(得分:1)

试试这个:

if (Headers.Contains(currentHeader) && checkString.Split('|').Contains(currentHeader)) {
    ....
}

如果您需要它不区分大小写:

if (Headers.Contains(currentHeader, StringComparer.InvariantCultureIgnoreCase) 
    && checkString.Split('|').Contains(currentHeader, StringComparer.InvariantCultureIgnoreCase) {
    ....
}

答案 4 :(得分:0)

也许我误解了这个问题,但这应该有效:

var checks = checkString.Split('|');
if ( currentHeader.Contains(checkString) && Headers.Contains(checkString) )
{
   ....
}