[英]EFCore 3: How to compare string columns on server side
我想有效地從此查詢中獲取結果。
// 獲取所有名字以 F 或更高字母開頭的人
Select * 來自 MyTable where PersonName >'F'
當我使用 Entity Framework Core 3.0 運行此代碼時,
context.MyTable
.Where(t=> String.Compare(t.PersonName ,"F")>0);
我有錯誤,
無法翻譯查詢。 以可翻譯的形式重寫查詢,或通過插入對 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync() 的調用顯式切換到客戶端評估
我目前的工作是使用 FromSQL 方法並編寫我自己的 sql。 有沒有什么方法可以使用 LINQ 語法來實現相同的目標?
來自微軟的文檔Where
此方法表示的查詢在 object 通過直接調用其 GetEnumerator 方法枚舉之前不會執行
您應該在 Where for 強制立即查詢評估之后調用方法 ToList() 或 ToListAsync()
在您的代碼中
context.MyTable
.TakeWhile(t => t.PersonName.First() > 'F')
.ToList();
最佳解決方案
獲取所有姓名以 F 或更高字母開頭的人
context.MyTable
.OrderBy(t => t.PersonName)
.SkipWhile(t => t.PersonName.First() < 'F')
.ToList();
注意大小寫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.