3

わかりやすく説明すると、

検索文字列がなく、リストにさまざまなフィールドが含まれています。

ここで、一度に検索文字列を指定しないと、述語は検索文字列を使用してリストのすべての項目を検索します。

一致後、述語オブジェクトを 1 つ取得します。

検索の次の反復では、別の述語を取得します。リストの同じフィールドを検索していないため、リストの同じ項目である可能性があります。

したがって、すべての述語オブジェクトを受け取った後、それらを結合して単一に割り当てます。

しかし、私は例外を得ています。

  string[] separator = new string[] { "+" };
        string[] searchItems = s.Split(separator, StringSplitOptions.None);  
         foreach (string str in searchItems)
                        {
                              _defaultPredicate = _defaultPredicate.And(e =>              

                               e.Name.ToLower().Contains(str) ||                                              

                                e.Lname.ToLower().Contains(str) ||       

                                e.Job.ToLower().Contains(str) );

                               Predicates.Add(_defaultPredicate);//predicates is a list
                        }

           foreach (Expression<Func<Alert, bool>> Predicate in Predicates)
                        {
                            _currentPredicate = _currentPredicate.Or(Predicate);
                            _currentPredicate.Compile();//Here its giving an  exception                            

                            // "an item with the same key has already been added".  
                        }

何をすべきか?重複した値を削除するにはどうすればよいですか?

4

1 に答える 1