相关疑难解决方法(0)

EF Code First:如何获取随机行

如何构建一个查询随机行的查询?

如果我在SQL中编写它,那么我会在newid()上输入一个命令并从顶部删除n行.无论如何要先在EF代码中执行此操作?

我尝试创建一个使用newid()并使用DbSet.SqlQuery()执行它的查询.虽然它有效,但它不是最干净的解决方案.

此外,尝试检索所有行并通过新guid对它们进行排序.尽管行数相当小,但它仍然不是一个好的解决方案.

有任何想法吗?

c# entity-framework ef-code-first entity-framework-4.1

68
推荐指数
3
解决办法
3万
查看次数

linq:随机排序

如何更改以下代码,每次从数据库中获取50个不同的随机数据?

return (from examQ in idb.Exam_Question_Int_Tbl
      where examQ.Exam_Tbl_ID==exam_id
      select examQ).OrderBy(x=>x.Exam_Tbl_ID).Take(50);
Run Code Online (Sandbox Code Playgroud)

c# linq random

59
推荐指数
3
解决办法
5万
查看次数

Linq to Entities,随机顺序

如何以随机顺序返回匹配的实体?
要明确这是Entity Framework的东西和LINQ to Entities.

(航空代码)

IEnumerable<MyEntity> results = from en in context.MyEntity
                                where en.type == myTypeVar
                                orderby ?????
                                select en;
Run Code Online (Sandbox Code Playgroud)

谢谢

编辑:
我尝试将其添加到上下文中:

public Guid Random()
{
    return new Guid();
}
Run Code Online (Sandbox Code Playgroud)

并使用此查询:

IEnumerable<MyEntity> results = from en in context.MyEntity
                                where en.type == myTypeVar
                                orderby context.Random()
                                select en;
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误:

System.NotSupportedException: LINQ to Entities does not recognize the method 'System.Guid Random()' method, and this method cannot be translated into a store expression..
Run Code Online (Sandbox Code Playgroud)

编辑(当前代码):

IEnumerable<MyEntity> results = (from en in context.MyEntity
                                 where …
Run Code Online (Sandbox Code Playgroud)

c# linq-to-entities entity-framework

36
推荐指数
3
解决办法
4万
查看次数

使用Linq选择N个随机记录

我有一个包含20多条记录的静态表,我想以随机的方式从该表中选择N(N <20).使用LINQ在代码中执行此操作的最佳方法是什么?

linq-to-sql

17
推荐指数
2
解决办法
2万
查看次数

C#:从IEnumerable获取随机值的优雅代码

在Python中,我可以这样做:

>>> import random
>>> ints = [1,2,3]
>>> random.choice(ints)
3
Run Code Online (Sandbox Code Playgroud)

在C#中,我做的第一件事是:

var randgen = new Random();
var ints = new int[] { 1, 2, 3 };
ints[randgen.Next(ints.Length)];
Run Code Online (Sandbox Code Playgroud)

但这需要索引,也需要复制ints困扰我.所以,我想出了这个:

var randgen = new Random();
var ints = new int[] { 1, 2, 3 };
ints.OrderBy(x=> randgen.Next()).First();
Run Code Online (Sandbox Code Playgroud)

仍然不是很好,很有效率.是否有更优雅的方式从IEnumberable获取随机值?

c#

17
推荐指数
2
解决办法
1万
查看次数

选择满足某些属性的随机数组元素

假设我有一个名为的列表,elements每个列表都满足或不满足某些布尔属性p.我想选择一个满足p随机均匀分布的元素.我提前知道有多少物品满足这个属性p.

以下代码会这样做吗?:

pickRandElement(elements, p)
     randElement = null
     count = 0
     foreach element in elements
          if (p(element))
               count = count + 1
               if (randInt(count) == 0)
                    randElement = element

     return randElement
Run Code Online (Sandbox Code Playgroud)

(randInt(n)返回一个随机INT k0 <= k < n.)

arrays algorithm statistics probability

13
推荐指数
2
解决办法
2238
查看次数

LINQ to SQL SOUNDEX - possible?

I have done a little bit of research on this and looked through a few articles both here on StackOverflow as well as some blog posts, but haven't found an exact answer. I also read that it is possible to do it using the 4.0 framework, but have yet to find any supporting evidence.

So my question, is it possible to perform SOUNDEX via a LINQ to SQL Query?

sql soundex linq-to-sql

10
推荐指数
3
解决办法
6044
查看次数

使用Entity Framework和MySQL的随机顺序

简介:我想找到一种使用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中使用自定义功能?

c# mysql entity-framework

6
推荐指数
1
解决办法
2993
查看次数

通过linq2sql选择n个随机行

我知道使用

ORDER BY NEWID()
Run Code Online (Sandbox Code Playgroud)

运行常规sql命令时的功能.我想做同样的事情,但通过linq2sql.

我宁愿选择整个范围内,通过rnd.Next(添加一个随机数),然后进行排序,最后...

c# random linq-to-sql

5
推荐指数
1
解决办法
1495
查看次数

使用 LINQ(ala TABLESAMPLE)从大型结果集中有效地选择随机行

我想从一个非常大的表(数百万行)上的复杂查询的结果中选择一些随机行。

我正在使用 SQL Server 2008,有效地执行此操作的正确方法似乎是TABLESAMPLE子句。

注 1:我对流行的“order by NEWID()”解决方案不感兴趣 - 它对于大型表来说效率低下。

注 2:由于我的查询很复杂,如果可能的话,我不想首先计算它的 COUNT。

注3:由于结果集很大,我不想自己遍历它,就像这里建议的那样。

最重要的是我正在使用 LINQ。具体来说,就是 LINQ-To-Entities。

是否有一种 LINQ 友好的方式来使用 TABLESAMPLE?

即使没有直接支持,是否有某种方法可以在 LINQ 中编写大部分查询,然后执行少量手动 SQL 来执行 TABLESAMPLE?

linq sql-server random linq-to-entities sql-server-2008

5
推荐指数
1
解决办法
2238
查看次数