首先,我会建议你移动o UT斯达康的condition statement
到一个单独的方法,因为它将使代码更具可读性,当你使用Linq:
private bool UserNameContains(<your user name> user, string searchFor)
{
return user.FirstName.IndexOf(searchFor, StringComparision.OrdinalIgnoreCase) != -1 ||
user.LastName.IndexOf(searchFor, StringComparision.OrdinalIgnoreCase) != -1;
}
请注意,我用的IndexOf(...) != -1
。这是因为Contains
内部使用相同的方法,但使用StringComparision.Ordinal
参数。假设你不关心外壳,那么使用IndexOf(..., StringComparision.OrdinalIgnoreCase)
好多了,这样你就可以避免降低字符串字符,并防止引入错误,以防searchFor
包含一个高位字符。
然后,所有你需要做的是:
userInfoList.AddRange(allUserList.Where(user => this.UserNameContains(user, searchFor));
,或者如果userInfoList
是新的空单,你可以将整个逻辑移动到其变量声明:
var userInfoList = allUserList.Where(user => this.UserNameContains(user, searchFor).ToList();
请注意,您应该添加using System.Linq;
使用指令为了能够使用Linq扩展。
ToLower是一个函数,所以你需要大括号 – WebFreak001 2014-11-14 14:47:17
@ WebFreak001正确 – Jonesopolis 2014-11-14 14:47:39