[英]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.