C# 带有where条件(x&;x)| |(x&;x)的Linq查询 char[]分隔符=新字符[]{''}; string[]names=name.Trim().Split(分隔符,StringSplitOptions.RemoveEmptyEntries); employees=(List)employees.Where( e=> (e.FirstName.Contains(名称[0])和&e.LastName.Contains(名称[1]))|| (e.LastName.Contains(名称[0])&e.FirstName.Contains(名称[1])) )
上面,我尝试使用LinqLambda查询员工列表。我需要将输入框中输入的搜索词拆分为空格字符,并使用它从包含由空格分隔的两个搜索词的员工列表匹配(FirstName&&LastName)或(LastName&&FirstName)中提取C# 带有where条件(x&;x)| |(x&;x)的Linq查询 char[]分隔符=新字符[]{''}; string[]names=name.Trim().Split(分隔符,StringSplitOptions.RemoveEmptyEntries); employees=(List)employees.Where( e=> (e.FirstName.Contains(名称[0])和&e.LastName.Contains(名称[1]))|| (e.LastName.Contains(名称[0])&e.FirstName.Contains(名称[1])) ),c#,linq,C#,Linq,上面,我尝试使用LinqLambda查询员工列表。我需要将输入框中输入的搜索词拆分为空格字符,并使用它从包含由空格分隔的两个搜索词的员工列表匹配(FirstName&&LastName)或(LastName&&FirstName)中提取 我不知道在查询条件下我做错了什么。它返回列表中的所有员工,而不是给出匹配的条件。我认为问题发生在您的第二个OR子句中: char[] delimiter = new char[] {' '}; string[] names = name.Trim().Spli
我不知道在查询条件下我做错了什么。它返回列表中的所有员工,而不是给出匹配的条件。我认为问题发生在您的第二个OR子句中:
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]))
)
它应该是
names
而不是name
,否则它将分别获取name
变量的第一个和第二个字符。将Where()
返回的IEnumerable强制转换到列表中不起作用。相反,您可以使用ToList()
:
具有有用名称的变量是。。有用。@rikitikitik非常感谢@是的,我已经在我的代码中这样做了,在Where-then-orderby和take-ToList之后。感谢您注意到:)
(e.LastName.Contains(name[0]) && e.FirstName.Contains(name[1])
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();