当我有条件时,使用Linq to SQL检索随机行的最佳(和最快)方法是什么,例如某些字段必须为true?
如何构建一个查询随机行的查询?
如果我在SQL中编写它,那么我会在newid()上输入一个命令并从顶部删除n行.无论如何要先在EF代码中执行此操作?
我尝试创建一个使用newid()并使用DbSet.SqlQuery()执行它的查询.虽然它有效,但它不是最干净的解决方案.
此外,尝试检索所有行并通过新guid对它们进行排序.尽管行数相当小,但它仍然不是一个好的解决方案.
有任何想法吗?
当我从包含一些孩子的数据库中检索项目列表(通过.Include),并随机排序时,EF给我一个意想不到的结果..我创建/克隆添加项目..
为了更好地解释自己,我创建了一个小而简单的EF CodeFirst项目来重现问题.首先,我将为您提供此项目的代码.
创建一个基本的MVC3项目,并通过Nuget添加EntityFramework.SqlServerCompact包.
这会添加以下软件包的最新版本:
模型和DbContext
using System.Collections.Generic;
using System.Data.Entity;
namespace RandomWithInclude.Models
{
public class PeopleContext : DbContext
{
public DbSet<Person> Persons { get; set; }
public DbSet<Address> Addresses { get; set; }
}
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
}
public class Address
{
public int ID { get; set; …Run Code Online (Sandbox Code Playgroud) 简介:我想找到一种使用Entity Framework和MySQL进行随机排序的方法(这很重要).该解决方案不应使用原始SQL查询或在从数据库加载所有值后进行排序.
我尝试过的:
我想从使用NewGuid()获得该答案的随机顺序.
码:
var query = from e in context.Table
orderby Guid.NewGuid()
select e;
var test = query.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
总是抛出异常:
An error occurred while executing the command definition. See the inner exception for details.
Inner exception:
FUNCTION MyDatabase.NewGuid does not exist System.Exception {MySql.Data.MySqlClient.MySqlException}
Run Code Online (Sandbox Code Playgroud)
似乎问题是MySQL没有NewGuid()函数.
我怎样才能通过MySQL函数RAND()来代替NewGuid().换句话说,如何RAND在Entity Framework中使用自定义功能?
下午好,
我有一个使用 linqdatasource + 实体框架 iqueryable 查询填充的列表视图。
该查询使用如下所示的 take(t-sql 上的 top):
context.Categories().OrderBy(c=>c.Name).Take(20);
Run Code Online (Sandbox Code Playgroud)
它为我提供了我想要按名称排序的 20 条记录。
现在我想按随机顺序显示这 20 条记录。完成此任务的最佳方法是什么?
我用以下代码构建MyObject数组:
MyObject[] myObject = (from MyObject varObj in MyObjects
select varObj).ToArray();
Run Code Online (Sandbox Code Playgroud)
现在,我想从这个数组中提取3个随机MyObject!我怎么能在C#上做到这一点?
当然,如果数组长度<3,我需要提取所有对象!
c# ×4
.net ×1
asp.net ×1
asp.net-mvc ×1
linq ×1
linq-to-sql ×1
mysql ×1
random ×1
sql-order-by ×1