Linq查询不返回数据

时间:2018-10-02 04:41:23

标签: c# sql linq

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

我在做什么错了?

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

我在select子句中找到了答案,方法是让我选择的groupIDs而不是表Id中的另一个字段DistributionGroupId。谢谢大家的投入