Seleccionar filas aleatorias usando LINQ 2 SQL
Frecuentes
Visto 1,011 veces
0
Me preguntaba cuál era la mejor manera de seleccionar filas aleatorias de una tabla usando LINQ 2 SQL, mientras buscaba encontré esas dos preguntas:
Obtenga una fila aleatoria con LINQtoSQL
pero no creo que esta sea la mejor y más rápida forma, según msdn, usar NewID() es una mala forma de seleccionar filas al azar y en este artículo:
http://msdn.microsoft.com/en-us/library/cc441928.aspx
propusieron otra consulta que es más rápida que el método NewID:
SELECT * FROM Table1
WHERE (ABS(CAST(
(BINARY_CHECKSUM(*) *
RAND()) as int)) % 100) < 10
la idea básica detrás de esta consulta es que quieren generar un número aleatorio entre 0 y 99 para cada fila de la tabla, y luego elegir todas aquellas filas cuyo número aleatorio sea menor que el valor del porcentaje especificado
pero cuando traté de hacer esto usando LINQ no pude encontrar un equivalente a BINARY_CHECKSUM
Entonces, ¿es su equivalente para BINARY_CHECKSUM en LINQ?
y ¿es realmente la forma más rápida de seleccionar filas al azar? (si me pueden ayudar a convertirlo a código LINQ me será mucho más fácil)
gracias por tu ayuda
1 Respuestas
-1
Algo así funcionaría?
private static readonly Random _randomInstance = new Random();
private readonly Func<int, bool> ChanceSuccess = new Func<float, bool>(f =>
_randomInstance.Next(0, 101) <= f);
var result = from row in Table1
where ChanceSuccess(10)
select row;
contestado el 25 de mayo de 12 a las 11:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c# entity-framework linq-to-sql .net-4.0 or haz tu propia pregunta.
Su consulta pierde algunos bits, al menos
select
y un punto y coma al final. - JoeyDe ninguna manera eso será traducible a SQL. erikallen
@erikkallen La pregunta era sobre linq-to-sql y EF, ¿no? (undownvote hombre). - agentefuego