簡體   English   中英

如何使用 ef 訪問 c# 查詢列表中的 object?

[英]How can i access an object in a list in c# query with ef?

所以我在嘗試執行查詢時遇到問題。 我正在嘗試使用 ef 在 c# 中的 linq 查詢中獲取列表的最后一個元素。

這是我試圖執行的代碼:

 public List<Viagem> getViagensToBeCompletedInBlocoTrabalho()
 {
     return this.context.Viagens
        .Where(v => v.blocosTrabalho.Count() == 0
          || !v.blocosTrabalho.LastOrDefault().noFim.Equals(v.horasPassagem.LastOrDefault().codigoNo)
        )
        .ToList();
 }

但我收到此錯誤:執行“LastOrDefault”操作的查詢必須具有確定性排序順序。 重寫查詢以在調用“LastOrDefault”之前對序列應用“OrderBy”子句。

我在這里做錯了什么?

順便說一句,我想要的排序是表中條目的順序,所以我真的不想對任何東西進行排序。 雖然我也測試了排序但它不起作用。

我在這里先向您的幫助表示感謝:-)

實際上SQL標准不支持從頭檢索記錄,甚至不保證記錄的具體順序。 EF 正在嘗試通過更正OrderBy運算符來模擬它,如果您不指定它 - 它將會失敗。

考慮重寫您的查詢並使其高效:

public List<Viagem> getViagensToBeCompletedInBlocoTrabalho()
{ 
    var query =
       from v in this.context.Viagens
       from b in v.blocosTrabalho.OrderByDescending(x => x.Id)
          .Take(1).DefaultIfEmpty()
       from h in v.horasPassagem.OrderByDescending(x => x.Id)
          .Take(1).DefaultIfEmpty()
       where
          b == null || b != null && b.noFim == h.codigoNo
       select v;

     return query.ToList();
 }

暫無
暫無

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

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