質問があります:
// Query: gets recipients that have not been sent yet....
var query = (from rec in ent.Recipients
join ch in ent.CampaignHistories on rec.RecipientID equals ch.RecipientID
into chl
from x in chl.DefaultIfEmpty().Where(xx => !xx.RecipientID.HasValue)
select new BRecipient()
{
Email = rec.Email,
Name = rec.Name,
RecipientID = rec.RecipientID
}).Take(remaining);
これは基本的に SQL で左結合を行います。これは次のようになります。
Select * FROM Recipients AS R LEFT OUTER JOIN
CampaignHistory AS H ON R.RecipientID = H.RecipientID
WHERE (H.RecipientID IS NULL)
私が欲しいのは:
Select * FROM Recipients AS R LEFT OUTER JOIN
CampaignHistory AS H ON R.RecipientID = H.RecipientID
AND H.CampaignID <> 21
WHERE (H.RecipientID IS NULL)
LINQ の作成方法