如何在linq中随机排到sql?

时间:2011-08-11 17:17:12

标签: c# asp.net linq linq-to-sql

我想使用linqtosql从数据库中随机排一行,但我的要求有些不同......

我的代码就是这个......

var qry = from tb in DC.tbcategory
          where tb.parentID == null
          order by tb.sortOrder
          select new
          {
                categoryID = tb.CategoryID,
                ImageID = (from tb in DC.tbImage
                          where tb.CategoryID == tc.CategoryID
                          orderby Guid.NewID()
                          select tb.ImageID).FirstorDefault()
          }

在这个例子中tbcategory和tbimage有一对多的关系,我想随机记录tbImage表。

2 个答案:

答案 0 :(得分:3)

试试这个

在SQL Server中创建一个视图以进行随机记录

CREATE VIEW RandomView
AS
SELECT NEWID() As ID

然后在SQL server中创建一个functin

CREATE FUNCTION GetNewId
(
)
RETURNS uniqueidentifier
AS
BEGIN
RETURN (SELECT ID FROM RandomView)
END

然后使用你这样的linq查询

var qry = from tb in DC.tbcategory
          where tb.parentID == null
          order by tb.sortOrder
          select new
          {
                categoryID = tb.CategoryID,
                ImageID = (from tb in DC.tbImage
                          where tb.CategoryID == tc.CategoryID
                          orderby DC.GetNewId()
                          select tb.ImageID).FirstorDefault()
          }

我希望它肯定会有效......

答案 1 :(得分:0)

也许您可以在结果集上使用此扩展方法。这是URL