Linq查询检查列表和字符串之间的子字符串

时间:2017-04-03 08:49:03

标签: c# asp.net linq

我有一个字符串列表和一个字符串,我希望如果该字符串包含列表中存在的任何字符串,则系统返回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是包含以下元素的字符串列表:

  1. 邮政信箱
  2. P.O。 BOX
  3. 当我评估这个表达式时,它总是返回true。

4 个答案:

答案 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));