我不知道這是否會反對,因爲日期的東西直接在數據庫工作,但這樣的事情應該工作對一個內存中的集合:
// Assuming Visits is an IEnumerable<Visit>
var userVisits = from v in Visits
group v by v.User into groupedVisits
select new { // AnonymousType1
User = groupedVisits.Key,
Visits = from gv in groupedVisits
group gv by gv.DateScheduled.Date into dateVisits
select new { // AnonymousType2
DateScheduled = dateVisits.Key,
Customers = from dv in dateVisits
select dv.CustomerId
}
}
這將使你,實質上包含以下結構:
class AnonymousType1
{
public int User { get; set; }
public IEnumerable<AnonymousType2> { get; set; }
}
class AnonymousType2
{
public DateTime DateScheduled { get; set; }
public IEnumerable<int> Customers { get; set; }
}
和userVisits
會一個IEnumerable<AnonymousType1>
我不知道你將如何避免使用一些嵌套的foreach
語句來實際顯示數據。但是這應該以一種容易實現的格式給你提供數據。
注意:我認爲上面提到的IEnumerable<>
類型中的一些可能實際上是IQueryable<>
或類似的。但這是僞代碼,只是爲了說明使用類似於上面的LINQ語句的最終結果。
來源
2015-02-10 21:42:46
Tim
真棒。謝謝蒂姆,這解決了我的問題。我做的唯一的事情就是輸入匿名類型,一切都像魅力一樣。 – 2015-02-13 14:22:56
如果我想統計所有訪問過的客戶,該怎麼辦?這將使匿名類型2中的每個'IENumerable Customers'COUNT ...我如何實現這一目標? –
2015-03-03 14:35:54