Linq-запрос не возвращает данные - PullRequest
0 голосов
/ 02 октября 2018

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

SELECT DISTINCT c.Id, c.FirstName, c.LastName, c.PhoneNumber, 'Waiting to be sent'
FROM DistributionGroupMembers dgm
JOIN Contacts c on dgm.ContactId = c.Id
JOIN DistributionGroups dg on dgm.DistributionGroupId = dg.Id
WHERE dg.Id IN (
    SELECT DistributionGroupId
    FROM DistributionGroupInSms
    WHERE SmsId = 40
)

Когда я пытаюсь выполнить адекватный запрос в C # с использованием LINQ, он ничего не возвращает:

int[] groupIDs = await _db.DistributionGroupInSms.Where(dgis => dgis.SmsId == message.Id).Select(g => g.Id).ToArrayAsync();
var recipients = await (from dgm in _db.DistributionGroupMembers
                        join c in _db.Contacts on dgm.ContactId equals c.Id
                        join dg in _db.DistributionGroups on dgm.DistributionGroupId equals dg.Id
                        where groupIDs.Contains(dg.Id)
                        select new
                        {
                            ID = c.Id,
                            FN = c.FirstName,
                            LN = c.LastName,
                            PN = c.PhoneNumber,
                            SR = "Waiting to be sent"
                        }).Distinct().ToListAsync();

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Я понял это в предложении select, получив groupIDs, который я выбрал Id вместо другого поля в таблице под названием DistributionGroupId.Спасибо всем за вклад

0 голосов
/ 02 октября 2018

Можете ли вы просто сделать объединение:

int[] groupIDs = await _db.DistributionGroupInSms.Where(dgis => dgis.SmsId == message.Id).Select(g => g.Id).ToArrayAsync();
var recipients = await (from dgm in _db.DistributionGroupMembers
                        join c in _db.Contacts on dgm.ContactId equals c.Id
                        join dg in _db.DistributionGroups on dgm.DistributionGroupId equals dg.Id
                        join gIds in groupIDs on gIds equals dg.Id
                        select new
                        {
                            ID = c.Id,
                            FN = c.FirstName,
                            LN = c.LastName,
                            PN = c.PhoneNumber,
                            SR = "Waiting to be sent"
                        }).Distinct().ToListAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...