Linq使用稍微复杂的选择列表

这是一个简化的选择列表

<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))

当选择“全部”选项时,以前的解决方案将正常工作。 由于All由空字符串表示, .Contains将在任何情况下返回true。 选择Test时会中断,因为它也会返回Test1和Test2

第二个解决方案(==)对于除All以外的所有情况都可以正常工作,如果我想将它用于多选列表,它将会中断。

第三种解决方案将正确处理All,但如果选择Test,它仍将返回Test1和Test2。

我如何修改此代码以使用All ,多重选择并仅选择确切值?


无论如何,你需要添加一个特殊的例子来覆盖"All" ,因为它是非常特殊的。 例如,您可以像这样重写第二个解决方案:

someTable.Where(r => string.Empty == stuff || r.someField == stuff);
链接地址: http://www.djcxy.com/p/53743.html

上一篇: Linq to work with slightly complex selectlist

下一篇: performance gain on queries vs. loss on INSERT/UPDATE