cómo obtener filas aleatorias en linq con la última fila insertada en la parte superior
Estoy tratando de mostrar productos aleatorios a la vista para cada solicitud,esta OrderBy(r => Guid.NewGuid())
funciona bien, pero estoy tratando de aumentar el rendimiento cuando los registros de la tabla son enormes, así que utilicé la segunda opción deaquí
mi accion:
public ActionResult ProductType(string id)
{
List<ProductsView> productlist = (from a in this.dbo.ProductTable
join ca in dbo.Category on a.CategoryID equals ca.CategoryID
where ca.Category == id
select new ProductsView()
{
CategoryID = c.CategoryID,
Categorycount = c.Categorycount
}).ToList<ProductsView>();
// here shuffle or mix products
int count = productlist.Count();
int index = new Random().Next(count);
ViewBag.Products = productlist.Skip(index).ToList();
return View();
}
pero cuando la vista devuelve faltan algunos registros, por ejemplo:
primera solicitud cuenta 4 índice 1
muestra 3 productos a la vista
segundo requisito cuenta 4 índice 2
muestra 2 productos a la vista
tercera solicitud cuenta 4 índice 3
muestra 1 producto a la vista
Finalmente tengo un requisito más. ¿Puedo mostrar la última fila insertada en la parte superior y dejar que otros productos sean aleatorios?
¿Puedo saber lo que me estoy perdiendo?
Cualquier ayuda sería genial.