2011-04-27 66 views
0

嘗試找到解決方案,但我不能。實體隨機從數據庫中選擇C#MVC

所以問題是下一個。我有數據庫的EDM模型。我有一個功能類來從數據庫中獲取數據。 這樣的:

public IQueryable<photos> FindUserPhotos(string userlogin) 
     { 
      return from m in db.photos 
        where m.userlogin == userlogin 
        select m; 
     } 

如何從數據庫中獲得隨機10行?

+1

[從Sql的Linq隨機行]的可能重複(http://stackoverflow.com/questions/648196/random-row-from-linq-to-sql) – 2011-04-27 16:32:48

回答

0

Random row from Linq to Sql

public photos FindRandomUserPhoto(string userlogin) 
{ 
    var qry = FindUserPhotos(userlogin); 
    int count = qry.Count(); 
    int index = new Random().Next(count); 
    return qry.Skip(index).FirstOrDefault(); 
} 

public Array<photos> Find10RandomUserPhotos(string userlogin) 
{ 
    var result = New Array<photos>; 
    for (i = 0; i < 10; i++) { 
     result.add(FindRandomUserPhoto(userlogin)); 
    } 
    return result 
} 
+1

如果這是一個騙局,不要發佈鏈接作爲答案...發表評論,而不是。 – 2011-04-27 16:32:32

+0

甚至更​​好,投票結束重複。 – 2011-04-27 16:33:55

+0

不知道如何投票做近..也許沒有權限呢? – ariel 2011-04-27 16:36:21

4

我總是用這種方法獲取自定義實體的OrderBy(X => Guid.NewGuid())

public photos Find10RandomUserPhotos(string userlogin) 
{ 
    return db.photos.Where(x => x.userlogin == userlogin).OrderBy(x => Guid.NewGuid()).Take(10).ToList(); 
}