Where子句在某些情况下选择所有

时间:2018-03-01 10:01:34

标签: c# linq

我有一个下拉列表,其中包含选项' dog',' cat'和'所有'。

如果这只是“狗”的话。或者' cat'没问题,我可以写...

var SelectedPets = pets.Where(x => w.species == ViewModel.SlectedDropdownListSpecies)

我的应用程序中有几个Dropdownlists有多个选项+' all'。

我能看到在Linq中实现all选项的唯一方法是使用一系列if语句 - 如果用户选择' all'那么Where根本就没用过。

我希望避免使用这种代码:

if (ViewModel.SelectedDropdownListSpecies != 'all')
{
    SelectedPets = Pets.Where(x => w.species == ViewModel.SlectedDropdownlistValue)
}

if (ViewModel.SelectedDropdownlistValue2 != 'all')
{
    SelectedPets = SelectedPets.Where(x => w.colour == ViewModel.SlectedDropdownListColour)
}

有没有一种方法可以让我有一个类似于上面的Linq表达式,以某种方式尊重所有'值。

这是一个绿地应用程序,所以我在如何实施方面有很大的摆动空间。

我还没能在谷歌上找到任何东西 - 不确定要搜索什么。感谢。

1 个答案:

答案 0 :(得分:3)

也许:

var SelectedPets = pets.Where(x => w.species == ViewModel.SlectedDropdownlistValue || ViewModel.SlectedDropdownlistValue == "all")