c# - 占据列表的前 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; }
解决方案
您始终可以使用以下方法引入随机“排序” 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))