214 messaggi dal 25 settembre 2001
Ciao a tutti,

uso questa sintassi per selezionare i record

var rs = (from m in srcdati.TABELLA
where m.ISVISIBILE == isAttivo
select m).OfType<T>().ToList();
if (rs == null) rs = new List<T>();
IQueryable rs2 = rs.AsQueryable();
rs2 = (IQueryable)LinqExtensions.OrderByExtension(rs2, HelperUtility.cleansort("ID"), HelperUtility.typesort(orderby));
return (IQueryable<T>)rs2;

ora su un'altro sito in cui usa l'entityframewrok funziona egregiamente

qui invece non funziona da IQueryable rs2 = rs.AsQueryable();
praticamente in dubug mi perde lo status di rs, ossia i dati li vedo in grid, ma non posso modificare più l'rs, ad esempio
successivamente faccio un
lista2.Random().Take(nRandom);
dove lista2 è il risultato di rs2
ma non lo prende in considerazione e quindi non ritorna i soli n record che dovrebbe ma tutti come su rs

Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
penso che invocare il metodo .AsQueryable() non ti porti alcun vantaggio. Infatti, subito dopo aver invocato il .ToList(), le entità si materializzano in memoria e a quel punto usi Linq To Objects per estrarne un campione casuale.
var rs = (from m in srcdati.TABELLA
where m.ISVISIBILE == isAttivo
select m).OfType<T>().ToList();

'ne estraggo 3 ordinate casualmente
var rs2 = rs.OrderBy(item => Guid.NewGuid().ToString()).Take(3);


Se il problema è il tipo di ritorno della funzione in cui questo codice si trova, allora penso che dovresti semplicemente cambiarlo in ICollection<T>.

Oppure ho capito male e l'ordinamento casuale deve verificarsi lato server, perché magari hai decine di migliaia di records?

ciao,
Moreno.

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.