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 ラムダを使用して従業員リストをクエリしようとしています。入力ボックスに入力された検索語をスペース文字で分割し、それを使用して、一致する (FirstName && LastName) OR (LastName && FirstName) の 2 つの検索語をスペースで区切った従業員リストから取得する必要があります。

クエリ条件で何が間違っているのかわかりません。一致する条件を与えるのではなく、リスト内のすべての従業員を返しています。

4

2 に答える 2

3

問題は2番目のOR句で発生すると思います:

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

それ以外の場合namesnamename変数の最初と 2 番目の文字をそれぞれ取得します。

于 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 に答える