以下LINQ to Entities查詢獲取來自電子郵件的所有鏈接點擊,並通過URL將它們分組並將其投影到模型中。在LINQ to SQL中對記錄進行分組和計數,同時包括來自計數的所有記錄
所需的最終結果會是這樣的:
Clicks | URL | Clickers
-------------------------------------------------------------------------------------
2 x.com User 1, User 2...
1 y.com User 1
我有一個對象CampaignEmailRecipient
其中包含誰點擊了鏈接,這也是我想在我的財產Clickers
模型,包括所有用戶。
我只是不確定如何正確地與我的團隊做到這一點,並想知道是否有人能夠協助?
我的模型
public class CampaignEmailReportLinksViewModel
{
public int Id { get; set; }
public int CampaignElementId { get; set; }
public string LinkURL { get; set; }
public int QtyClicks { get; set; }
public CampaignEmailRecipient Clickers { get; set; }
}
我查詢
public List<CampaignEmailReportLinksViewModel> GetCampaignLinksByElementId(int id, int cid, string user)
{
var items = (from t1 in db.CampaignLinkClicks
where
(t1.CampaignLink.CampaignElementId == id) &&
(t1.CampaignLink.CampaignElement.Campaign.CompanyId == cid)
group new {t1} by new
{
t1.CampaignLink.URL,
t1.CampaignLink.CampaignElementId
}
into g
select new CampaignEmailReportLinksViewModel
{
LinkURL = g.Key.URL,
QtyClicks = g.Count(),
Clickers = ???????????
}).OrderByDescending(x => x.QtyClicks).ToList();
return items.ToList();
}
編輯
CampaignLinkClick看起來是這樣的:
public int Id
public int CampaignRecipientId
public string IP
public datetime Timestamp
public int CampaignLinkId
您可以列舉CampaignLinkClicks的所有屬性嗎? – Richthofen
@Richthofen我已將此添加到問題的結尾。 – Nick
謝謝。好吧,我假設CampaignRecipientId指向一個記錄,指出誰點擊了它?如果您使用EntityFramework和外鍵,則應該能夠使用CampaignLinkClick.CampaignRecipients上的導航屬性來獲取這些內容。如果你不使用外鍵,你必須做db.CampaignRecepients.Where(n => n.CampaignRecipientID = t1.CampaignLinkClick.CampaignRecipientID) – Richthofen