我有List
个对象;我想通过对象的字符串属性中的第一个字母来过滤此列表。
public class MyObject
{
public string Name { get; set; }
public MyObject(){}
}
我正在使用LINQ查询:
List<MyObject> myList = FillList();
myList = myList.Where(p => p.Name[0] != "A").ToList();
我的问题是Name
的第一个字母可能前面有空格。 Name
属性的三个示例:
0 1 2 3 4
N A M E
N A M E
N A M
不是从Name
删除所有空格,而是可以使用LINQ完成吗?
答案 0 :(得分:4)
您可以使用TrimStart
并暂时删除Name
开头的空格并检查第一个字母
myList = myList.Where(p => p.Name.TrimStart(' ')[0] != 'A').ToList();
顺便说一下,您需要使用'A'
因为Name[0]
是char
而不是string
。
答案 1 :(得分:4)
您可以使用TrimStart
,请注意字符串是不可变的,因此您不会修改原始字符串。
myList = myList
.Where(p => !p.Name.TrimStart().StartsWith("A")).ToList();
我正在使用StartsWith
因为它很清楚并且还处理空字符串的情况。
答案 2 :(得分:1)
当然可以!在.Where()
子句中使用多个检查,la
p.Name[0] != 'A' && p.Name[1] != 'A'...
或者,更简单地说,使用string.Trim()
删除路径G空格:
.Where(p => p.Name.ToString().Trim().StartsWith('A')) `