>我目前有一个看起来像这样的类
class Student
{
[Key]
public int StudentLogId { get; set; }
public string Guid { get; set; }
public string info { get; set; }
}
现在我想做的是根据 Id(顶部的最后一个(降序对结果进行排序,然后从这些结果中获取不同的值(简而言之,排序顺序很重要(。我注意到如果我这样做
根据学生的ID按降序排列学生
List<string> lst = StudentLogHistoryModel.OrderByDescending(s => s.StudentLogId).Select(u => u.Guid).ToList<string>();
上面以正确的顺序返回正确的结果,现在我只想获取唯一值,所以我尝试添加到上面的查询中并想出了这个
List<string> lst = StudentLogHistoryModel.OrderByDescending(s => s.StudentLogId).Select(s => s.Guid).Distinct().ToList<string>();
但是我注意到在第二个订单中被搞砸了。关于为什么订单没有被保留的任何建议?我该如何解决这个问题?
我的意思是订单搞砸了,假设我得到的第一个结果是这个[A,A,B,B,D]
我希望在第二次查询后得到[A,B,D]
。但是我得到类似 [D,A,B] 的东西
根据文档:
由于执行表达式而发生的查询行为 表示调用的树 独特(IQueryable( 取决于源参数类型的实现。这 预期的行为是它返回 源中的唯一项目。
那里的关键位是"无序"。IQueryable的Distinct
不保证秩序得到维持。因此,您需要在Distinct
后OrderBy
。