我很困惑如何使用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);
}
答案 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文化。某些语言具有转换为大写或大写的特殊规则。如果您希望具有与文化无关的行为,请改用ToLowerInvariant
或ToUpperInvariant
。