0

私がここで達成しようとしているのは、10年間年間1台の車を返却することです。私が得ているのは、すべて2013年の車である10台の車です。これは、2013年、2012年、2011年などで並べ替える必要があります。その年のリコールが最も多い車である必要があります。

public static IEnumerable<MakeModel> mostrecalledmodelbyYear
{
    get
    {
        var groups = from t in DBCacheHelper.recallslist
                        where t.YEARTXT != "9999"
                        group t by new { t.YEARTXT, t.MODELTXT, t.MAKETXT } into g
                        select new MakeModel() { MODELTXT = g.Key.MODELTXT, MAKETXT = g.Key.MAKETXT, Frequency = g.Count(),YEARTXT = Convert.ToInt32(g.Key.YEARTXT) };

        return groups.OrderByDescending(g => g.YEARTXT).Take(10);
    }
}
4

1 に答える 1

0

そのようなものでなければなりません

var query= 
(from t in DBCacheHelper.recallslist
where t.YEARTXT != "9999"
group t by t.YEARTXT into g
let q = g.GroupBy(t => new {t.MODELTXT, T.MAKETXT})
         .Select(g2 => new {
               key = g2.Key,
               freq = g2.Count()
            })
         .OrderByDescending(t => t.freq)
let max = q.FirstOrDefault()
select new MakeModel {
   MODELTXT = max.key.MODELTXT,
   MAKETXT = max.key.MAKETXT,
   Frequency = max.freq,
   YEARTXT = g.Key//care, Convert.ToInt32 won't work in linqtoentities 
})
.OrderByDescending(f => f.YEARTXT)
.Take(10);
于 2012-09-26T06:52:04.967 に答える