次の LINQ to Entities クエリは、電子メールからすべてのリンク クリックを取得し、それらを URL でグループ化し、モデルに射影します。
望ましい最終結果は次のようになります。
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