c#Lambda表达式字符串列表

时间:2016-07-27 18:55:00

标签: c# lambda

我很困惑如何使用Lambda表达式在列表中查找指定的文本 例如,我有一个列表

List<string> MyList = new List<string> {"TEXT","NOTEXT","test","notest"};

正如您所见,列表被“ToUpper”和“ToLower”属性过滤 我希望例如使用Lambda Expression

在此列表中搜索<​​strong> ToLower 元素
var SList = MyList.FindAll(item => item.ToLower);
foreach(var s in SList)
   {
      Console.WriteLine(s);
   }

2 个答案:

答案 0 :(得分:2)

只检查小写值是否与当前值匹配,对于上层

是否相同
var lower = MyList.Where(a=>a == a.ToLowerInvariant());
var upper = MyList.Where(a=>a == a.ToUpperInvariant());

如果您想使用特定于文化的版本进行检查,那么只需使用特定于文化的方法

var lower = MyList.Where(a=>a == a.ToLower());
var upper = MyList.Where(a=>a == a.ToUpper());

答案 1 :(得分:0)

ToLower不是属性而是方法,它不进行测试(即它不返回bool)但返回转换后的字符串。

这意味着,因为它是一种方法,所以必须在它后面添加括号(.ToLower())。

为了进行测试,您必须将结果与某些内容进行比较。在这种情况下使用原始字符串,以查看它是否等于小写字符串。

var SList = MyList.FindAll(item => item == item.ToLower());

ToLower的确切工作取决于当前的UI文化。某些语言具有转换为大写或大写的特殊规则。如果您希望具有与文化无关的行为,请改用ToLowerInvariantToUpperInvariant