В таком случае я обычно разбираю свою логику запроса, чтобы ее было проще читать (не включайте встроенное условие в сам запрос).Чтобы упростить мой пример, я не могу безопасно анализировать учетные идентификаторы, хотя я бы рекомендовал сделать это в вашем конечном коде (вместо этого используйте 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())
должно помочь, хотя я бы действительно рекомендовал иметь дело с целыми числами, а не со строками.