선택 목록에서 값을 기반으로 단순화 된 선택 목록Linq에 약간 복잡한 selectList의 다음
<select name="stuff">
<option value="">All</option>
<option>Test</option>
<option>Test1</option>
<option>Test2</option>
<option>Horses</option>
</select>
가 함께 작동하도록, 내 테이블에서 관련 값을 찾을 싶습니다.
LINQ
1. someTable.Where(r => r.someField.Contains(stuff));
2. someTable.Where(r => r.someField == stuff);
3. var a = someTable;
if(stuff != null)
a = a.Where(r => r.someField.Contains(stuff))
"모든"옵션을 선택하면 전자 솔루션이 제대로 작동합니다. 모든 문자가 빈 문자열 으로 표시되므로 .Contains
은 모든 경우에 true를 반환합니다. 테스트를 선택할 때 내가 원하는 경우도 모든를 제외한 모든 경우에 잘 작동합니다 Test1을 및 Test2를
두 번째 솔루션 (==)을 반환하며, 휴식 것입니다 이것은, 나누기 다중 선택 목록에 사용하십시오.
세 번째 솔루션은 제대로 모든을 처리합니다,하지만 여전히 선택 테스트 경우 Test1을 및 Test2를 반환합니다.
All
, 복수 선택 및 정확한 값만 선택하도록이 코드를 어떻게 수정할 수 있습니까?
세 번째 솔루션에 대해 'r.someField == stuff'을 사용하지 않는 이유는 무엇입니까? 잘못된 동작을하는 경우 처음에는'.Contains'를 사용하는 이유가 혼란 스럽습니다. – mellamokb
@mellamokb 세 번째 해결 방법에서'=='를 사용하면 다중 선택이없는 경우에만 작동합니다. 나는 다중 선택을 위해 어떻게 깨지는지에 관해서는 제 2의 해결책을 끝냈다. 나는 그것을 조금 더 명백하게해야했다. – Jeff