【发布时间】:2013-08-11 19:05:51
【问题描述】:
我有多个组合框将值传递给 linq 查询。以前我是用
if(combobox.text == "select all")
{combobox.text = "")
然后使用 StartsWith(combobox.text) 方法进行比较,我知道这是错误的。因为“jim”会返回“Jimmy”。选择“全选”时如何全选?
【问题讨论】:
我有多个组合框将值传递给 linq 查询。以前我是用
if(combobox.text == "select all")
{combobox.text = "")
然后使用 StartsWith(combobox.text) 方法进行比较,我知道这是错误的。因为“jim”会返回“Jimmy”。选择“全选”时如何全选?
【问题讨论】:
最好有条件地添加查询过滤器:
var query = dataSource.foo.AsQueryable();
//you may or may not need AsQueryable() depending on what "foo" is
//if it is not queryable, you may need AsEnumerable(), or simply nothing
if (!combobox.Text.Equals("select all"))
query = query.Where(x => x.Equals(combobox.Text));
return query.ToList();
“更简单”的方法是使用布尔值or,但生成的查询更难看,可能会也可能不会翻译成 SQL(如果您正在使用的话):
var query = dataSource.foo
.Where(x => combobox.Text.Equals("select all") || x.Equals(combobox.Text));
【讨论】: