わかりやすく説明すると、
検索文字列がなく、リストにさまざまなフィールドが含まれています。
ここで、一度に検索文字列を指定しないと、述語は検索文字列を使用してリストのすべての項目を検索します。
一致後、述語オブジェクトを 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".
}
何をすべきか?重複した値を削除するにはどうすればよいですか?