首页 > 解决方案 > 占据列表的前 26 位

问题描述

我有以下代码以递减的值顺序打印列表的前 19 个项目,它工作正常,但在我的列表中,许多最重要的项目具有相同的值,所以我希望每次都取前 5 个但不一样那些。

using System;
using System.Linq;
using System.Collections.Generic;
public class Demo {
   public static void Main() {
      IList<Employee> emp = new List<Employee>() { 
         new Employee() { EmployeeRank = 4, EmpName = "Amit", EmpMarks = 90 } ,
         new Employee() { EmployeeRank = 05, EmpName = "Raman",  EmpMarks = 95 }
      };
      var res = from str in emp orderby str.EmpName descending select str;
      Console.WriteLine("Student List (Descending Order):");
      foreach (var list in res)
         Console.WriteLine(list.EmpName);
   }
}

public class Employee {
   public int EmployeeRank { get; set; }
   public string EmpName { get; set; }
   public int EmpMarks { get; set; }

标签: c#list

解决方案


您始终可以使用以下方法引入随机“排序” Random.Next

var rnd = new Random(); 
var randomOrdered = list2
    .OrderByDescending(m => m.Item2)
    .ThenBy(m => rnd.Next())
    .Take(5);

或者通过查询语法,这应该可以工作:

var rnd = new Random(); 
foreach (var str in (from m in list2 orderby m.Item2 descending, rnd.Next() select m).Take(5))

推荐阅读