使用LINQ从数据库中提取特定行

时间:2017-08-09 06:43:49

标签: sql-server visual-studio linq

Screen capture from SQL Server Management Studio

我想根据以下标准从数据库中提取记录:

  • TransLog_Date小于或等于2017-08-08以及TransactionType。
  • 排除第一行(标有红色框),因为它的TransLog_ShareBalance在第2行所示的时间内减少了。
  • 排除第4行和第5行,因为它们也大于2017-08-08的指定日期

我已经尝试了以下但是因为我在LINQ中不擅长而遇到错误。如果您也可以在纯SQL中编写它,我将不胜感激。

var transQuery = from t in db.TransactionsLogDbSet
                         where (t.TransactionType == TransactionType.PurchaseOfShares)
                                || (t.TransactionType == TransactionType.TransferOfShares)
                                || (t.TransactionType == TransactionType.BonusSharesDeclared)
                         group t by t.Transholder_ID into groupedTable
                         select (from t1 in groupedTable
                                 orderby t1.TransLog_Date
                                 descending
                                 select t1).FirstOrDefault();

1 个答案:

答案 0 :(得分:0)

        var transQuery = (from t in db.TransactionsLogDbSet
                          where (t.TransactionType == TransactionType.PurchaseOfShares)
                                 || (t.TransactionType == TransactionType.TransferOfShares)
                                 || (t.TransactionType == TransactionType.BonusSharesDeclared)
                          orderby t.TransLog_Date
                          group t by t.Transholder_ID into groupedTable
                          select new { TransLog_ShareBalance = groupedTable.Key}).FirstOrDefault();