Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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# 带有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

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


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

我认为问题发生在您的第二个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();