Вы можете использовать, где для этого, например,
var roles = _context.Schools
.Where(c=>c.SchoolId == 1 || c.schoolId == 3)
.Select(x =>
new SelectListItem
{
Value = x.SchoolId.ToString(),
Text = x.SchoolNamePostCode
});
или, конечно, также впоследствии;
var roles = _context.Schools
.Select(x =>
new SelectListItem
{
Value = x.SchoolId.ToString(),
Text = x.SchoolNamePostCode
})
.Where(c=>c.Value == "1" || c.Value == "3");
На основе списка значений:
var searchWords = new List<string>(new [] { "1", "2"});
var roles = _context.Schools
.Select(x =>
new SelectListItem
{
Value = x.SchoolId.ToString(),
Text = x.SchoolNamePostCode
})
.Where(c=>searchWords.Contains(c.Value));
примечание; вместо содержимого вы также можете использовать .Any()
. Он более гибкий, так как требует делегата, но поскольку .Contains()
является методом, присущим объекту коллекции, может быть быстрее. С точки зрения EF и linq на sql, все это в любом случае переводится на SQL запрос, поэтому я сомневаюсь, что это важно.