开发者

How to get random row in linqtosql?

i want to take a random row from database by using linqtosql, but my requirement is some different....

my code is this...

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()
          }

in this example tbcategory and tbimage has one to many relation and i want to take random record of tbImage table.


Try this

Create a view in SQL server for take a random record

CREATE VIEW RandomView
AS
SELECT NEWID() As ID

Then create a functin in SQL server

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

then use you linq query like this

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()
          }

I hope it will work definitely....


Perhaps you can use this extension method on your resultset. Here's the URL.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜