我有一个通用列表,我想从LINQ或LAMBDA中获取每个记录的第一个字符。我的班级就像:
public class User
{
public string FirstName {get;set;}
public string LastName {get;set;}
}
我从数据库中提取了记录并将记录填入列表。现在我想获取列表中每条记录的第一个字符,以便我可以为我的前端创建字母过滤器。
例如:如果我的List的FirstName字段包含“George”,“Abraham”,“Zulu”等...那么我的字母过滤器应包含:“A”,“G”,“Z”..
任何建议都将不胜感激。 提前致谢.............
答案 0 :(得分:0)
var users = new List<User>();
...
List<char> firstLetters =
users
.Select(user => user.FirstName)
.Where(firstName => firstName != null && firstName.Any())
.Select(firstName => firstName[0])
.ToList();
你说:
这样我就可以为我的前端
创建字母过滤器
听起来你可能想要唯一的字符,在这种情况下你也想要调用Distinct
,如果你想按顺序调用它们可能OrderBy
:
List<char> firstLetters =
users
.Select(user => user.FirstName)
.Where(firstName => firstName != null && firstName.Any())
.Select(firstName => firstName[0])
.Distinct()
.OrderBy(ch => ch)
.ToList();