[英]How to create a new DateTime where condition using table field with LINQ
我在 c# 中有一個 win 應用程序,我將在其中獲得一個 linq 查詢,其中 where 條件包含由表字段連接的數據。 我的查詢是:
var fatture = (from t016 in cont.T016_FATT
where t016.ID_FATTURA = aiIdFattura
&& Convert.toDateTime("01" + t016.COD_MESE+"/"+t016.ANNO) > aiData
select t016).ToList();
其中t016.COD_MESE
是表示月份值的字符串, aiIdFattura
是函數中傳遞的十進制參數,aiData 是 DateTime 參數。
但是這個 linq 查詢給了我這個錯誤:
LINQ to Entities 無法識別 Convert.ToDateTime 方法
我在互聯網上找到了一個建議使用 EntityFramework(版本 6)中存在的 DBFunctions 的解決方案,但我有一個次要版本的 EntityFramework 所以我不能使用這個函數。
另一個找到的解決方案是在 linq 查詢之前格式化日期,但在我的情況下是不可能的,因為取決於 T016_FATT 所以我不能先格式化我的日期。
所以你有什么想法建議我嗎?
多謝
請記住,您的查詢將被轉換為 SQL,在這種情況下,您的 Linq 提供程序不知道如何將該方法調用轉換為 sql 語句。 為避免該問題,您可以使用AsEnumerable
擴展方法將 Linq to Entities 切換到 Linq to Objects。 調用該方法后,您可以應用日期轉換:
var fatture = cont.T016_FATT.Where(e=>e.ID_FATTURA == aiIdFattura)
.AsEnumerable()
.Where(e=>Convert.toDateTime("01" +"/"+ e.COD_MESE+"/"+e.ANNO) > aiData)
.ToList();
如果您想查看 Linq to Entities 支持的方法,可以查看此鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.