3
명확하게 설명해 드리겠습니다.술어 개체에서 중복을 제거하는 방법?
검색 문자열이없고 목록에 다른 입력란이 있습니다.
이제 한 번에 검색 문자열을 제공하지 않을 것입니다. 그러면 내 술어는 검색 스팅을 사용하여 목록의 모든 항목을 검색합니다.
일치 후 나는 하나의 술어 개체를 얻을 것이다.
검색의 다음 반복에 대해 다른 조건자를 얻습니다. 목록의 동일한 필드에서 검색하지 않기 때문에 목록에서 같은 항목 일 수 있습니다.
그래서 모든 조건부 객체를받은 후 결합하여 하나의 객체에 할당합니다.
하지만 예외가 발생합니다.
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".
}
무엇을할까요? 중복 된 값을 제거하려면 어떻게해야합니까?
짧지 만 완전한 * 예제가 도움이된다고 생각합니다. 현재 그 의미가 무엇인지는 분명하지 않습니다. "in"체크 만 원하면'Contains'를 사용하지 않는 이유가 무엇입니까? –
정확한 일치를 원하지 않기 때문입니다. 목록에 문자열이 포함되어 있으면 문자열이 표시되어야합니다. – Sowmya
하지만 그게'x => list.Contains (x)'가하는 일입니다. 다시 한 번 완전한 예를 들어 보면이 사실이 더 명확해질 수 있습니다. –