实体框架 - 按降序排序,然后对该结果执行 Distinct 返回错误的结果



>我目前有一个看起来像这样的类

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不保证秩序得到维持。因此,您需要在DistinctOrderBy

最新更新