是否有任何默认顺序凡在LINQ查询子句过滤序列
问题描述:
public IQueryable<CarVersion> GetCar(int carIdToSearch)
{
return _Dbcontext.CarVersion.Include("CarFactory").
.Where(x => x.carId== carIdToSearch);
}
我有CarVersion
表,其中有两列版本和carId。版本列是主键。单卡车可以有多个版本。 CarFactory
表具有来自carVersion表的外键版本。所以我试图理解,当我执行上面的查询时,它总是给我按升序排列的结果。或者它会基于主键?或者它可以保证?我查看了MS文档,但没有提到有关订购的任何信息。是否有任何默认顺序凡在LINQ查询子句过滤序列
答
您将得到的结果取决于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);
+0
谢谢。这很有帮助。 – S52
不保证订单将被保留。它可能会也可能不会依赖于提供者。如果你需要这个命令,你可以使用LINQ'.OrderBy()'方法。 – Fabjan