Simpledata随机排序

时间:2012-07-10 11:55:55

标签: simple.data

SimpleData问题

我有两张桌子:公司和产品。当我查询并获得满足特定条件的所有公司的产品时,我希望每次返回时都会随机排序结果。我怎么做?

此外,

我很想,(如果你可以帮忙)每个公司拥有最多的产品数量。所以

Database.Default.Products.All().Where(Database.Default.Products.Companies.Status=3)

将返回所有产品,但我只想要最多3个或每个。

1 个答案:

答案 0 :(得分:3)

没有内置支持这样做,因为它在Simple.Data支持的不同SQL和NoSQL数据库中实现的方式太多了。

最好的办法是将搜索实现为存储过程,您可以从Simple.Data中调用它,就像它是数据库对象上的方法一样。

假设您正在使用SQL Server,那将是

CREATE PROCEDURE RandomProductSearch(@Status int, @Take int) 
AS
BEGIN
    SET NOCOUNT ON;

    SELECT TOP (@Take) Products.*
    FROM Products
    JOIN Companies ON Products.CompanyId = Companies.CompanyId
    WHERE Companies.Status = @Status
    ORDER BY NEWID()
END

然后您可以从Simple.Data中调用,如下所示:

var products = Database.Default.RandomProductSearch(3,10);

希望有所帮助。