在linq查询中组合框“全选”

时间:2013-08-09 18:50:06

标签: winforms linq combobox

我有多个组合框,可以将值传递给linq查询。以前我用

处理它
    if(combobox.text == "select all")
       {combobox.text = "")

然后使用StartsWith(combobox.text)方法进行比较,我知道这是错误的。因为“吉姆”会回归“吉米”。选择“全选”时如何选择全部?

1 个答案:

答案 0 :(得分:2)

最好是有条件地添加查询过滤器:

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