我有一个字符串列表和一个字符串,我希望如果该字符串包含列表中存在的任何字符串,则系统返回false。我正在使用以下lambda表达式:
result = !(((string[])ro_operandVal).ToList<string>()).Any(x => x.ToString().ToUpper() == lo_operandVal.ToString().ToUpper());
以下是数据集:
lo_operandVal =&#34; ABC DEF GHI Post Office Box&#34; ro_operandVal是包含以下元素的字符串列表:
当我评估这个表达式时,它总是返回true。
答案 0 :(得分:2)
你可以试试下面的linq -
如果在字符串中找到列表中的任何值,则它将返回false
,如果没有找到,则返回true
。
var result = ro_operandVal.All(c=>lo_operandVal.IndexOf(c) < 0);
<强>更新强>
两者都是对象类型,你知道它们的确切类型List<string>
和string
你可以输入它们。
var result = ((List<string>)ro_operandVal).All(c=>lo_operandVal.ToString().IndexOf(c) < 0);
答案 1 :(得分:0)
使用.Contains()
查看文本是否包含在列表中,而不是尝试使用equals运算符完全匹配字符串。
result = !(((string[])ro_operandVal).ToList<string>()).Any(x => x.ToString().ToUpper().Contains(lo_operandVal.ToString().ToUpper()));
答案 2 :(得分:0)
使用包含如下:
result = !(((string[])ro_operandVal).ToList<string>()).Any(x => x.ToString().ToUpper().Contains(lo_operandVal.ToString().ToUpper()));
答案 3 :(得分:0)
以下代码对我来说非常合适
result = !(((string[])ro_operandVal).ToList<string>().Any(lo_operandVal.ToString().Contains));
忽略这个案子:
result = !((((string[])ro_operandVal).ToList<string>().ConvertAll(d => d.ToUpper())).Any(lo_operandVal.ToString().ToUpper().Contains));