2017-08-27 175 views
0

我在下面的webapi中提取數據的方法。 我正在構建一個應用程序,該應用程序將具有來自此方法的默認數據的列表視圖。 我希望每次用戶啓動應用程序時都會更改此數據。從數據庫生成隨機集合

如何使用此方法生成隨機數據。有大約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;      
       } 

實施例:第一次使用該應用,我看到大約20行(默認數據)的數據的列表。 第二次使用它時,我看到與上次使用該應用程序不同的另外20行的不同列表。

+0

任何人都可以幫助嗎?我仍然沒有解決方案。 – user2320476

回答

1

爲什麼不嘗試使用AutoFixture。這個框架將幫助您在每次進行WebAPI調用時生成隨機數據。這裏是GITHub鏈接。如果有幫助,請標記爲答案。

https://github.com/AutoFixture

+0

我不想使用任何第三方組件。謝謝 – user2320476

1

只是排序依據一個隨機數,然後採取像你一樣多:

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

好,但並沒有解決問題_第二次我使用它,我看到另一個不同於上次使用應用程序的20行的列表._ – Steve

+0

@Steve你的意思是你第一次運行你總是想看到默認數據? –

+0

[閱讀本文後](https://stackoverflow.com/questions/654906/linq-to-entities-random-order)現在我不確定你的答案是否有效(見J.Skeet答案) – Steve