c# - Refactor GroupBy to avoid slowing down operation on big dataset -
i have big collection need newest item based on 2 properties. first step ordering list based on date prop. fine , pretty quick.
then group newlist 2 properties, , take first item each.
var 1 = fisks.where(s=>s.havn.id == 1).orderbydescending(s=>s.date); var 2 = one.groupby(s=>new {s.arter.name, s.sort}); var 3 = two.select(s=>s.firstordefault());
this works, slow when using on large collection. how can avoid using groupby still same result?
thanks!
using linq first step , taking first ones in loop gives more control on process , avoids grouping altogether:
var query = fisks .where(f => f.havn.id == 1) .orderbydescending(f => f.date) .thenby(f => f.arter.name) .thenby(f => f.sort); var list = new list<fisk>(); foreach (fisk fisk in query) { if (list.count == 0) { list.add(fisk); } else { fisk last = list[list.count - 1]; if (fisk.sort != last.sort || fisk.arter.name != last.arter.name) { list.add(fisk); } } }
Comments
Post a Comment