我想使用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表。
答案 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。