我有string Array
和List<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。
答案 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));