Условный запрос LINQ, где значение может быть нулевым - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь написать запрос для выбора данных из базы данных.У меня есть следующий код:

 from notes in ctx.Notes
 .Where(x => x.UserId== user.UserId 
 || x.UserId == user.FamilyId 
 || x.UserId == user.CompanyId).DefaultIfEmpty()

Проблема в том, что FamilyId и CompanyId являются обнуляемыми типами и могут вообще не иметь никакого значения, которое повреждает весь запрос.Как я могу переписать его, чтобы он смотрел только на FamilyId / CompanyId, если они имеют значения?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Просто, просто добавьте предложение AND, чтобы проверить, не является ли оно нулевым:

 from notes in ctx.Notes.Where(x => x.UserId== user.UserId || (user.FamilyId ! =null && x.UserId == user.FamilyId) || (user.CompanyId !=null && x.UserId == user.CompanyId)).DefaultIfEmpty()
0 голосов
/ 01 февраля 2019

Создать запрос условия:

var users = ctx.Notes.Where(x => x.UserId == user.UserId);

if (user.FamilyId != null)
{
    users = users.Union(ctx.Notes.Where(x => x.UserId == user.FamilyId));
}

if (user.CompanyId != null)
{
    users = users.Union(ctx.Notes.Where(x => x.UserId == user.CompanyId ));
}

var result = users.ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...