вложенные условия - PullRequest
       10

вложенные условия

0 голосов
/ 23 февраля 2010

Привет, у меня есть модель, где я должен посчитать строки с условиями: uscitaservizio == атрибут false и accountid (int) в виде строки

es: фильтродипа = "2,4,5,6"

Я пробовал с этим:

db.TDP_Missioni.Count( p => p.UscitaServizio == false && 
                    (objUser.FiltroDipe != null ? (p.AccountID.ToString() in objUser.FiltroDipe.Split(',')) : true))

Но это неверно.

Как я могу это сделать?

спасибо

1 Ответ

0 голосов
/ 23 февраля 2010

В таком случае я обычно разбираю свою логику запроса, чтобы ее было проще читать (не включайте встроенное условие в сам запрос).Чтобы упростить мой пример, я не могу безопасно анализировать учетные идентификаторы, хотя я бы рекомендовал сделать это в вашем конечном коде (вместо этого используйте int.TryParse()).

var missions = db.TDP_Missioni.Where(p => !p.UscitaServizio);

if (objUser.FiltroDipe != null)
{
    var accountIds = objUser.FiltroDipe.Split(',').Select(a => int.Parse(a));
    missions = missions.Where(m => accountIds.Contains(m.AccountID));
}

var missionCount = missions.Count();

Если вы предпочитаете хранить все это водин запрос, ключевая часть для просмотра accountIds.Contains(m.AccountID).
Изменение (p.AccountID.ToString() in objUser.FiltroDipe.Split(',')) на objUser.FiltroDipe.Split(',').Contains(p.AccountID.ToString()) должно помочь, хотя я бы действительно рекомендовал иметь дело с целыми числами, а не со строками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...