簡體   English   中英

復雜的嵌套Linq查詢

[英]Complex Nested Linq Query

我正在尋找處於指定狀態(“天”)之前提交的所有費用報告。 是否有更好(更快,更容易,更干凈)的方法來做到這一點?

var startDate = DateTime.Now.AddDays(-days);
using (var context = new Context())
{
    var data = context.tExpenseReports
                    .AsNoTracking()
                    .Where(r => context.tTransactionStatuses.FirstOrDefault(s => s.TransactionStatusID == r.tTransactions.Max(t => t.TransactionStatusID)) != null ?
                                context.tTransactionStatuses.FirstOrDefault(s => s.TransactionStatusID == r.tTransactions.Max(t => t.TransactionStatusID)).TransactionStatusID == IDConstants.TRANSACTION_STATUS_SUBMITTED &&
                                context.tTransactionHistories.FirstOrDefault(s => s.TransactionStatusID == r.tTransactions.Max(t => t.TransactionStatusID)).CreatedDatetime < startDate
                                : false)
              .Execute()
              .Select(Mapper.Map<tExpenseReport,ExpenseReport>)
              .ToArray();
              return data;
          }
    }

我不確定我是否了解您的所有方法

但我認為它將起作用

var sata1=( from r in context.tExpenseReports.AsNoTracking()
                       let max = r.tTransactions.Max(t => t.TransactionStatusID)
                       let s = context.tTransactionStatuses.FirstOrDefault(s => s.TransactionStatusID == max)
                       where s!=null
                       where s.CreatedDatetime < startDate

                       select r);
          return  sata1 .Execute()
              .Select(Mapper.Map<tExpenseReport,ExpenseReport>)
              .ToArray();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM