C# Where子句,在某些情况下选择all

C# Where子句,在某些情况下选择all,c#,linq,C#,Linq,我有一个下拉列表,有“狗”、“猫”和“所有”选项 如果这只是一个'狗'或'猫',将不会有任何问题,我可以写 var SelectedPets = pets.Where(x => w.species == ViewModel.SlectedDropdownListSpecies) 我的应用程序有几个下拉列表,其中有几个选项+全部 我能看到的在Linq中实现all选项的唯一方法是使用一系列if语句——如果用户选择“all”,那么Where就根本不用 我希望避免这种代码: if (ViewMo

我有一个下拉列表,有“狗”、“猫”和“所有”选项

如果这只是一个'狗'或'猫',将不会有任何问题,我可以写

var SelectedPets = pets.Where(x => w.species == ViewModel.SlectedDropdownListSpecies)
我的应用程序有几个下拉列表,其中有几个选项+全部

我能看到的在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表达式类似于上面的表达式,以某种方式也尊重“all”值

这是一个绿地应用程序,所以我在如何实现这一点上有很大的回旋余地

我在谷歌上找不到任何东西,也不确定到底要搜索什么。谢谢。

也许:

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

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

我不确定这是否是一种常见的技巧,但我喜欢横向思维。我不确定这是否是一种常见的技巧,但我喜欢横向思维。