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

C# 实体框架-按降序排序,然后对该结果执行Distinct,返回错误的结果,c#,entity-framework,C#,Entity Framework,我现在有一个类似这样的类 class Student { [Key] public int StudentLogId { get; set; } public string Guid { get; set; } public string info { get; set; } } 现在我想做的是根据Id(顶部最后一个)降序对结果进行排序,然后从这些结果中得到不同的值(简而言之,排序顺序很重要)。我注意到如果我这样做 //根据学生的id按降序排列 List<

我现在有一个类似这样的类

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 lst=StudentLogHistoryModel.OrderByDescending(s=>s.StudentLogId)。选择(u=>u.Guid)。ToList();
上面以正确的顺序返回正确的结果现在我只想得到唯一的值,所以我尝试添加到上面的查询中,并得出了以下结论

List<string> lst = StudentLogHistoryModel.OrderByDescending(s => s.StudentLogId).Select(s => s.Guid).Distinct().ToList<string>();
List lst=StudentLogHistoryModel.OrderByDescending(s=>s.StudentLogId)。选择(s=>s.Guid)。Distinct().ToList();
然而,我注意到,在第二次会议上,秩序混乱了。有没有关于为什么不能保留订单的建议?我怎样才能解决这个问题

我所说的秩序混乱的意思是假设我第一次得到这个结果
[A,A,B,B,D]
我希望在第二次查询后得到
[A,B,D]
。但是,我得到了类似于[D,A,B]

的结果,如下所示:

由于执行表达式而发生的查询行为 表示不同调用的树(IQueryable) 取决于源参数类型的实现。这个 预期的行为是,它返回一个无序的 源中的唯一项


这里的关键点是“无序”。IQueryable的
独特的
不保证订单得到维护。因此,您需要在
Distinct
之后执行
OrderBy
,无论如何,在
OrderByDescending()
之前执行
Distinct()
对我来说更有意义。对要丢弃的值进行排序毫无意义。@itsme86您能告诉我怎么做吗?如果我做了
.Select(s=>s.Guid).Distinct()
那么我就不能在它的studentloghistorymodel.Distinct().OrderByDescending(s=>s.StudentLogId)之后添加
OrderByDescending(s=>s.Guid).ToList()@OctoCode实体如何知道我想在Guid列上做一个Distinct?最好的方法是排序,分组,然后选择每组中的第一个。