一个简单数据问题
我有两个表:公司和产品。当我查询并获取所有满足特定条件的公司的产品时,我希望每次返回时都对结果进行随机排序。我怎么做?
还,
我很乐意(如果您能提供帮助)每家公司拥有最大数量的产品。所以
Database.Default.Products.All().Where(Database.Default.Products.Companies.Status=3)
将退回所有产品,但我只想要最多 3 个或每个。
一个简单数据问题
我有两个表:公司和产品。当我查询并获取所有满足特定条件的公司的产品时,我希望每次返回时都对结果进行随机排序。我怎么做?
还,
我很乐意(如果您能提供帮助)每家公司拥有最大数量的产品。所以
Database.Default.Products.All().Where(Database.Default.Products.Companies.Status=3)
将退回所有产品,但我只想要最多 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);
希望有帮助。