2014-02-11 85 views
0
using (EPOSEntities1 db = new EPOSEntities1()) 
{ 
    List<ActionPerformed> PLUlist = db.ActionPerformeds.ToList(); 
    ActionPerformed Latest_PLU = PLUlist.OrderByDescending(x => x.Date).FirstOrDefault(); 
} 

這將返回存儲的最後一條記錄。但是我現在在表File_Name中添加了另一列,我怎麼才能在這裏添加一個where子句來表示orderByDescending以獲取最新文件,然後從那裏獲得file_Name爲'Sales'的第一條記錄。獲取最後一條記錄後使用where子句?

例如,

File_Name Date 
12) Products 11/02/2014 
13) Sales 11/02/2014 
14) Products 11/02/2014 

這會返回記錄13 ??

+2

你爲什麼要拉動整個列表到內存中,以篩選出一個記錄,而不是盡一切濾波的數據庫? – Servy

回答

1
ActionPerformed Latest_PLU = PLUlist.Where(p => p.File_Name == 'Sales').OrderByDescending(x => x.Date).FirstOrDefault(); 
2

OrderByDescending使用前Where條款,如果你調用ToList會導致查詢的直接評價和記錄將填充。如果您在評估前打電話給Where將會更好。

ActionPerformed Latest_PLU = db.ActionPerformeds.Where(c=>File_Name == "Sales") 
          .OrderByDescending(x => x.Date) 
          .FirstOrDefault(); 
+0

降票的原因? – Adil

+2

只是一個平常的巨魔。我得到了同樣的東西,它真的困擾我。 –

2

Where方法您的收藏進行過濾,僅這些項目在File_Name"Sales"

考慮在執行調用之前放置您的LINQ查詢,以便您的LINQ-to-DB提供程序可以執行查詢服務器端並只返回一個項目。你正在做的是將整個ActionPeformeds表從服務器上下載到客戶端,然後執行查詢客戶端。

ActionPerformed Latest_PLU = db.ActionPerformeds 
    .Where(x => x.File_Name == "Sales") 
    .OrderByDescending(x => x.Date) 
    .FirstOrDefault(); 

通過「執行呼叫」我的意思是ToList()First()FirstOrDefault()

+0

在那裏,未被控制的,+1比看問題本身深一英寸。 –

相關問題