bir gruplandırma var mı o yıl içinde parçalanmış öğeleri ve o yıl içinde bir miktar ürün aldım. (yani 2001 - 10, 1975 - 15, 2005 - 5, 1976 - 1) Gerçekten yapmak istediğim şey onları on yıl içinde kırmaktır (yani 2000'ler - 15, 1970'ler - 16).nasıl ben EF LINQ kullanarak ve aşağıdaki LINQ sorgusu var am a "hesaplanan alan"
Bir Linq ifadesi için grup tümcesinin "by" kısmındaki "hesaplanan alan" a nasıl sahip olur. Ben tarafından grup yapmak için biraz daha karmaşık bir değerlendirme/hesaplama yapmak, böylece daha genel
var results = (from x in ctx.Items
group x by (x => x.Year.Value.ToString().Substring(0, 3) + "0s") into decades
orderby decades.Count() descending
select new { Decade = decades.Key, DecadeCount = decades.Count() });
Veya sözdizimi: Ne istediğinizi temelde gibi bir şey olduğunu düşünüyorum. Herhangi bir fikir?
DÜZENLEME (güncelleme):
(. X => x.Year.Value.ToString() Alt dize (0, 3) + "0") - İş yapmaz - "varlıkları için LINQ değil 'System.String ToString()' yöntemini tanır ve bu yöntem bir mağaza ifadesine dönüştürülemez. "
(x.Year/10 * 10) - Fonksiyonel (teşekkür ederim) işleri - Sadece ""
mi (yani 1970 vs 1970) 'ın' ucunda olmadığı yoktur Her neyse, bir yan tümcesine bir işlev koymak için? yani, x ile bu gruba x.Yıldır (x.Year) ... ya da ... x => x.Year.Value.ToString() Substring (0,3) + "0s"? Düşünebildiğim herhangi bir vakayı ele alabilmem için bazı tekniklere (bir işlevi çağırmak veya bir lambda ifadesi kullanmak gibi) sahip olmak güzel olurdu.
Bu konudaki herkesin yardımları için tekrar teşekkürler.
Hayır, bir gruplandırma zaten IEnumerables bir IEnumerable (böylece nesneler olarak tüm verileri geri dönebilirler ve daha sonra bir gruplandırılan). Burada SelectMany için gerek yok. –