0

我在 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
)

当我尝试使用 LINQ 在 C# 中运行适当的查询时,它不会返回任何内容:

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();

我究竟做错了什么?

4

2 回答 2

1

你可以简单地做一个加入:

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();
于 2018-10-02T04:51:00.977 回答
0

我在select子句中通过groupIDs选择 IId而不是表中名为DistributionGroupId. 感谢大家的投入

于 2018-10-02T15:56:56.697 回答