C# 此函数只能从LINQ调用到实体

C# 此函数只能从LINQ调用到实体,c#,sql,asp.net,linq,three-tier,C#,Sql,Asp.net,Linq,Three Tier,你知道为什么会这样吗?非常感谢 这是因为SqlFunctions.Rand()。说: 不能直接调用此函数。此函数只能出现在LINQ to Entities查询中。此函数将转换为数据库中的相应函数 这是因为SqlFunctions.Rand()。说: 不能直接调用此函数。此函数只能出现在LINQ to Entities查询中。此函数将转换为数据库中的相应函数 到底发生了什么?如果db是您的派生DbContext,而Intrebaris是一些DbSet,那么发布的代码应该可以工作。考虑发布。到底发生

你知道为什么会这样吗?非常感谢

这是因为
SqlFunctions.Rand()
。说:

不能直接调用此函数。此函数只能出现在LINQ to Entities查询中。此函数将转换为数据库中的相应函数


这是因为
SqlFunctions.Rand()
。说:

不能直接调用此函数。此函数只能出现在LINQ to Entities查询中。此函数将转换为数据库中的相应函数


到底发生了什么?如果
db
是您的派生
DbContext
,而
Intrebaris
是一些
DbSet
,那么发布的代码应该可以工作。考虑发布。到底发生了什么?如果<代码> dB <代码>是您派生的代码> dBaseX和 ItReBARISIS 是一些<代码> dBSET,发布的代码应该工作。考虑投稿,显然,但是为什么?OP代码似乎没有调用该函数。@IvanStoev据我所知,OP发布了一个工作版本,并询问当他将相同的查询应用于例如
列表时,为什么它不工作。显然,但为什么?OP代码似乎没有调用该函数。@IvanStoev据我所知,OP发布了一个工作版本,并询问当他将相同的查询应用于例如
列表时,为什么它不工作。
var quotes = (from q in db.Intrebaris 
    where q.id_materie == id_mat & q.id_tip_intrebare == tip_intr
    select q)
    .OrderBy(x =>SqlFunctions.Rand())
    .Take(10);

return quotes.ToList();