逐字翻譯是
var z = from d in db.GPSdevice
where d.CompanyId == currentuser.CompanyId && d.Type == "Trailer"
orderby d.ListOrder descending
group d by d.GeofenceLocation into g
orderby g.Count() descending
select new { Geofence = g.Key, g = (from g2 in g select g2), Count = g.Count() };
但是這不會導致完全相同的類型,原VB查詢。
這裏是一個更(過早?)優化版本,它導致同類型:
var z2 = (from d in db.GPSdevice
where d.CompanyId == currentuser.CompanyId && d.Type == "Trailer"
group d by d.GeofenceLocation into g
select new { Geofence = g.Key, g = (from g2 in g orderby g2.ListOrder descending select g2).ToArray(), Count = g.Count() }).OrderByDescending(g => g.Count);
小雞蛋裏挑骨頭,'和'應該是'AndAlso'。 '和'是按位和操作符,而不是邏輯和。 –
@JeffMercado與一些LINQ提供者,你必須使用'And'或單獨的'Where'查詢,因爲SQL沒有任何短路的概念 –
@JacobKrall,這是不相干的,這是操作符的錯誤用法這個背景並沒有實際的效果。如果它是相關的,則查詢提供者的工作是根據數據源的要求構建查詢。 –