0

一个简单数据问题

我有两个表:公司和产品。当我查询并获取所有满足特定条件的公司的产品时,我希望每次返回时都对结果进行随机排序。我怎么做?

还,

我很乐意(如果您能提供帮助)每家公司拥有最大数量的产品。所以

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

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

4

1 回答 1

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);

希望有帮助。

于 2012-07-10T16:45:42.507 回答