/// <summary> /// Get List User Like,Buy Product /// </summary> /// <param name="type"> 1_Like , 2_Buy</param> /// <param name="ID">ID Product</param> /// <param name="number">Amount row select</param> /// <returns>List <UserProfile></returns> public static List <UserProfile> GetListUserProfileRandom(int type, int productId, int number, int userId = 0) { List <UserProfile> listuser = new List <UserProfile>(); List <UserProfile> followedUsers = Follow_Logic.GetFollowedUsers(userId); switch (type) { case 1: if (userId <= 0) { // Not login user listuser = (from ProductLike pro in db.ProductLikes where pro.ProductId == productId orderby pro.ProductLikeId descending select pro.User).Distinct().Take(number).ToList(); } else { // Login user List <UserProfile> likeClickedUsers = (from ProductLike pro in db.ProductLikes where pro.ProductId == productId orderby pro.ProductLikeId descending select pro.User).Distinct().ToList(); listuser = (from f in followedUsers join l in likeClickedUsers on f.UserId equals l.UserId select l).ToList(); foreach (var followedUser in followedUsers) { likeClickedUsers.RemoveAll(u => u.UserId == followedUser.UserId); } listuser.AddRange(likeClickedUsers); } break; case 2: if (userId <= 0) { listuser = (from OrderDetail order in db.OrderDetails where order.ProductId == productId orderby order.OrderId descending select order.Order.Users).Distinct().Take(number).ToList(); } else { // Login user List <UserProfile> orderedUsers = (from OrderDetail order in db.OrderDetails where order.ProductId == productId orderby order.OrderId descending select order.Order.Users).Distinct().ToList(); listuser = (from f in followedUsers join o in orderedUsers on f.UserId equals o.UserId select o).ToList(); foreach (var followedUser in followedUsers) { orderedUsers.RemoveAll(u => u.UserId == followedUser.UserId); } listuser.AddRange(orderedUsers); } break; default: break; } // int count = listuser.Count(); // get count here // int index = new Random(number).Next(count); // var result = listuser.Skip(index).ToList(); // pick on here return(listuser); }