C# 从数据库生成随机集合

C# 从数据库生成随机集合,c#,asp.net-web-api,linq-to-entities,C#,Asp.net Web Api,Linq To Entities,我在webapi中使用了下面的方法来提取数据。 我正在构建一个应用程序,它将有一个listview,默认数据来自此方法。 我希望每次用户启动应用程序时,这些数据都会发生变化 如何使用此方法生成随机数据。大约有4个不同的类别 public IEnumerable<ArticlesDto> Find(string category) { IEnumerable<ArticlesDto>

我在webapi中使用了下面的方法来提取数据。 我正在构建一个应用程序,它将有一个listview,默认数据来自此方法。 我希望每次用户启动应用程序时,这些数据都会发生变化

如何使用此方法生成随机数据。大约有4个不同的类别

        public IEnumerable<ArticlesDto> Find(string  category)
                {
                    IEnumerable<ArticlesDto> objArticles = null;

                    var context = new ArticlesContext();

                        objArticles = (from j in context.Information
                                       where j.Category == category

                                       select new ArticlesDto()
                                       {
                                           Id = j.Id,
                                           Headlines = j.Headlines,
                                           Url = j.Url,
                                           Category = j.Category,
                                           Summary = j.Summary
                                       });
                        return objArticles;                       
                }
public IEnumerable查找(字符串类别)
{
IEnumerable objArticles=null;
var context=new ArticlesContext();
objArticles=(来自context.Information中的j
其中j.Category==Category
选择new ArticlesDto()
{
Id=j.Id,
标题,
Url=j.Url,
类别=j.类别,
总结=j.总结
});
返回对象;
}
示例:我第一次使用该应用程序时,看到一个大约20行的数据列表(默认数据)。
第二次使用时,我看到另20行的列表与上次使用该应用时不同。

为什么不尝试使用AutoFixture。此框架将帮助您在每次进行WebAPI调用时生成随机数据。这里是GITHub链接。如果这有帮助,请标记为答案


为什么不尝试使用自动夹具呢。此框架将帮助您在每次进行WebAPI调用时生成随机数据。这里是GITHub链接。如果这有帮助,请标记为答案


只需按随机数排序,然后取任意数量:

Random rnd = new Random();
objArticles = context.Information.Where(i=> i.Category == category)
.OrderBy(i=> rnd.Next())
.Select(i=> new ArticlesDto
{
     Id = i.Id,
     Headlines = i.Headlines,
     Url = i.Url,
     Category = i.Category,
     Summary = i.Summary
}).Take(20);

只需按随机数排序,然后取任意数量:

Random rnd = new Random();
objArticles = context.Information.Where(i=> i.Category == category)
.OrderBy(i=> rnd.Next())
.Select(i=> new ArticlesDto
{
     Id = i.Id,
     Headlines = i.Headlines,
     Url = i.Url,
     Category = i.Category,
     Summary = i.Summary
}).Take(20);

我不想使用任何第三方组件。谢谢,我不想使用任何第三方组件。谢谢,但这并不能解决我第二次使用它时的问题,我看到的另一个20行列表与上次使用应用时的列表不同。@Steve你是说第一次运行时你总是想看到默认数据吗?现在我不再确定你的答案是否有效(见J.Skeet答案),我只是尝试了一下,但没有效果。我将返回的数据量减少到2,并且每次运行时,返回的数据量都会超过2。这不适用于任何其他方法?很好,但不能解决问题第二次使用时,我看到另20行的不同列表,与上次使用应用时不同。@Steve你是说第一次运行时你总是想看到默认数据吗?现在我不再确定你的答案是否有效(见J.Skeet答案),我只是尝试了一下,但没有效果。我将返回的数据量减少到2,并且每次运行时,返回的数据量都会超过2。这是行不通的任何其他想法如何做到这一点?有人可以协助吗?我还是没有办法。有人能帮我吗?我仍然没有解决办法。