C# - 带有OR子句的LINQ语句

use*_*192 27 c# linq

我试图使用LINQ返回处于三种状态之一的任务列表.这些州是:

10 - 完成11 - 不完整12 - 跳过

状态可通过名为"TaskStateID"的属性获得.我可以在LINQ中执行此操作,只有一个状态,如下所示:

var filteredTasks = from task in tasks
                    select task;

// Do stuff with filtered tasks

string selectedComboBoxValue = GetFilterComboBoxValue();
if (selected ComboBoxValue == 3)
{
  filteredTasks = filteredTasks.Where(p => p.TaskStateID == 10); // How do I use an 'OR' here to say p.TaskStateID == 10 OR p.TaskStateID == 11 OR p.TaskStateID == 12
}
Run Code Online (Sandbox Code Playgroud)

如上面的注释所示,如何在LINQ语句中使用"OR"来表示p.TaskStateID == 10 OR p.TaskStateID == 11 OR p.TaskStateID == 12?

谢谢

Ode*_*ded 41

使用OR(||)运算符:

filteredTasks = filteredTasks.Where(p => p.TaskStateID == 10 || 
                                         p.TaskStateID == 11 || 
                                         p.TaskStateID == 12);
Run Code Online (Sandbox Code Playgroud)


Ron*_*ony 18

var taskIds = new[]{10, 11, 12}

var selectedTasks = filteredTasks.Where(p => taskIds.Contains(p.TaskStateID))
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 8

使用条件OR运算符:

filteredTasks = filteredTasks.Where(p => p.TaskStateID == 10 ||
                                         p.TaskStateID == 11 ||
                                         p.TaskStateID == 12);
Run Code Online (Sandbox Code Playgroud)