是否有任何默认顺序凡在LINQ查询子句过滤序列

问题描述:

public IQueryable<CarVersion> GetCar(int carIdToSearch) 
{ 
    return _Dbcontext.CarVersion.Include("CarFactory"). 
      .Where(x => x.carId== carIdToSearch); 
} 

我有CarVersion表,其中有两列版本和carId。版本列是主键。单卡车可以有多个版本。 CarFactory表具有来自carVersion表的外键版本。所以我试图理解,当我执行上面的查询时,它总是给我按升序排列的结果。或者它会基于主键?或者它可以保证?我查看了MS文档,但没有提到有关订购的任何信息。是否有任何默认顺序凡在LINQ查询子句过滤序列

+0

不保证订单将被保留。它可能会也可能不会依赖于提供者。如果你需要这个命令,你可以使用LINQ'.OrderBy()'方法。 – Fabjan

您将得到的结果取决于LINQ提供程序。如果它是Linq-To-Objects,订单是稳定的(阅读下面)。这意味着它将和源序列中的一样。如果它是一个数据库驱动的LINQ提供程序,如Linq-To-Entities,则订单不是预先确定的。

您需要sql中的ORDER BY以确保某个顺序。因此,你需要在LINQ的OrderBy

return _Dbcontext.CarVersion.Include("CarFactory"). 
    .Where(x => x.carId== carIdToSearch) 
    .OrderBy(x => x.Version); 
  • 然而,即使在LINQ到对象它不保证该顺序始终是相同的。它也取决于序列的类型。基于集合的集合如DictionaryHashSet也不能保证订单保持不变,因为您可以阅读herehere
+0

谢谢。这很有帮助。 – S52