获取最后一条记录后使用where子句?

时间:2014-02-11 16:46:34

标签: c# asp.net asp.net-mvc linq asp.net-mvc-3

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'。??

所以例如。

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

这将返回记录13 ??

3 个答案:

答案 0 :(得分:2)

Where之前使用OrderByDescending子句,如果调用ToList,它将立即评估查询并填充记录。如果你在评估之前打电话给哪里会更好。

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

答案 1 :(得分: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()等。

答案 2 :(得分:1)

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