これは単純化された選択リストです
<select name="stuff">
<option value="">All</option>
<option>Test</option>
<option>Test1</option>
<option>Test2</option>
<option>Horses</option>
</select>
選択リストの値に基づいて、テーブルから関連する値を見つけたいと考えています。
リンク
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))
「すべて」オプションが選択されている場合、前者のソリューションは適切に機能します。All は空の文字列stuffで表される.Contains
ため、どのような場合でも true を返します。Testを選択すると、 Test1とTest2も返されるため、これは壊れます。
2 番目のソリューション (==) は、 All を除くすべてのケースで正常に機能し、これを複数選択リストに使用する場合は機能しなくなります。
3 番目のソリューションはすべてを適切に処理しますが、 Testが選択されている場合はTest1とTest2を返します。
All
、複数選択、および正確な値の選択のみで動作するようにこのコードを変更するにはどうすればよいですか?