2016-09-22 69 views
3
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

回答

4

您將得到的結果取決於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