2013-05-06 2 views
0

Я прохожу модель оценки до результатов Действие с использованием перенаправления на действие. В контроллере Результаты действий я хотел бы выполнить Linq заявление для получения количества строк с помощью репозитория и независимо от значения posted.for ПримерОператор Linq для возврата числа строк

number of rows = Select * 
       from table or model 
       where SmokesInHouse = SmokesInHouse And 
         SmokesInCar = SmokesInCar And 
         SmokesAtWork = SmokesAtWork' 
public class SampleController : Controller 
{ 
    private IEnvRepository repository; 

    public SampleController(IEnvRepository assesmentRepository) 
    { 
     repository = assesmentRepository; 
    } 

    [HttpPost] 
    public ActionResult SmokingEnvironments(Assessment a) 
    { 
     if (ModelState.IsValid) 

      return RedirectToAction("Results", new { SmokesInHouse =SmokesInHouse,  SmokesInCar = a.SmokesInCar, SmokesAtWork=a.SmokesAtWork }); 
     } 
     return View(a); 
    } 

    [HttpGet] 
    public ActionResult Results() 
    { 
     return View(); 
    } 
} 

ответ

3

Вам необходимо обновить Results действие, чтобы принять Assessment модель т.е.

[HttpGet] 
public ActionResult Results(AssessmentModel assessment) 
{ 
    int rows = myTable.Where(x => x.SmokesInHouse == assessment.SmokesInHouse && 
            x.SmokesInCar == assessment.SmokesInCar && 
            x.SmokesAtWork == assessment.SmokesInWork).Count(); 
    return View(rows); 
} 
+0

'X.Where (P) .Count()' эквивалентно 'X.Count (P)'. –

1

Попробуйте сделать следующее, чтобы получить общее количество курильщиков в вашей модели:

int totalSmokers = model.Where(x => x.SmokesInHouse && x.SmokesInCar && x.SmokesAtWork).Count(); 

Если вы запрашиваете данные из таблицы базы данных, вы должны использовать то же предложение where.

+0

OP говорит, что условие 'AND' не' OR'. – James

0

Есть перегрузка Count method, которая берет предикат. При этом запрос может быть упрощен, чтобы что-то вроде:

int totalSmokers = xs.Count(x => 
    x.SmokesInHouse == a.SmokesInHouse && 
    x.SmokesInCar == a.SmokesInCar && 
    x.SmokesAtWork == a.SmokesAtWork); 

Я предполагаю, что это IQueryable, который будет выполняться на сервере, и он не может сделать разницу. Но если это IEnumerable, это может иметь значение для больших последовательностей.

Смежные вопросы