簡體   English   中英

如何使用帶有 LINQ 的表字段創建新的 DateTime where 條件

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

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