1
char[] delimiter = new char[] {' '};

string[] names = name.Trim().Split(delimiter, StringSplitOptions.RemoveEmptyEntries);

employees = (List<CMSUser>)employees.Where(
                    e => 
                       (e.FirstName.Contains(names[0]) && e.LastName.Contains(names[1])) ||
                       (e.LastName.Contains(name[0]) && e.FirstName.Contains(name[1]))
                     )

上面,我正在尝试使用 Linq lambda 来查询员工列表。我需要将输入框中输入的搜索词拆分为空格字符,并使用它从员工列表匹配 (FirstName && LastName) OR (LastName && FirstName) 中提取包含由空格分隔的这两个搜索词。

我不知道我在查询条件下做错了什么。它返回列表中的所有员工,而不是提供那些匹配条件。

4

2 回答 2

3

我认为问题发生在您的第二个 OR 子句中:

(e.LastName.Contains(name[0]) && e.FirstName.Contains(name[1])

names不应该name,否则分别获取name变量的第一个和第二个字符。

于 2012-10-31T02:18:40.093 回答
0

将返回的 IEnumerableWhere()转换为 List 应该不起作用。相反,您可以使用ToList()

employees = employees.Where(
                    e => 
                       (e.FirstName.Contains(names[0]) && e.LastName.Contains(names[1])) ||
                       (e.LastName.Contains(names[0]) && e.FirstName.Contains(names[1]))
                     )
                      .ToList();
于 2012-10-31T04:19:09.310 回答