检查字符串数组中列表项的存在

时间:2015-10-01 06:45:23

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

我有string ArrayList<Class>

string[] TypeArray = Type.Trim().Split(',');
List<ClassName> TypeList = obj.GetList(id);

现在,我想检查sting[]中是否存在List<ClassName>中的任何值。

目前,我可以使用Nested Foreach进行以下操作::

foreach (var Type in TypeList)
{
    foreach (string SingleType in TypeArray)
    {
        if (Type .Vaue.ToLower().Equals(SingleType.ToLower()))
        {
            IsValidType = true;
            break;
        }
    }
}

我没有在此使用Entity Framework。

5 个答案:

答案 0 :(得分:2)

bool IsPresent = TypeArray.Any(p=>TypeList.Any(x=>x.Value.Equals(p, StringComparison.InvariantCultureIgnoreCase)))

答案 1 :(得分:1)

试试这个: -

bool IsPresent = TypeList.Any(x => TypeArray
                                    .Any(z => x.Value.ToLower() == z.ToLower());

由于您要检查我使用==的相等性,如果您希望匹配,也可以Contains

您需要在代码中导入System.Linq。如果您的目标是.Net framework 3.5或更高版本,则会自动引用其程序集。

答案 2 :(得分:0)

foreach (var Type in TypeList)
{
    if (TypeArray.Contains(Type.Value.ToLower()))
    {
        IsValidType = true;
        break;
    }    
}

答案 3 :(得分:0)

如果您不想要Linq(正如您在评论中提到的那样),那么这里有一些改进。

foreach (var Type in TypeList)
{
    if (Array.FindIndex(TypeArray, singleType => 
        singleType.Equals(Type.Value, StringComparison.InvariantCultureIgnoreCase)) > -1)
    {
        IsValidType = true;
        break;
    }
}

请注意,这只需要System命名空间。最低要求!

答案 4 :(得分:0)

导入LINQ:

using System.Linq;

使用以下lambda表达式来实现您的目标。

bool IsValidType = TypeList.Any(x => TypeArray.Contains(x.Value, StringComparer.OrdinalIgnoreCase));