gpt4 book ai didi

c# - [System.DateTime])' 没有支持的 SQL 转换

转载 作者:行者123 更新时间:2023-11-30 14:10:51 25 4
gpt4 key购买 nike

我想执行这样的查询:

List<supervisorAnswerQuesttionPres> temp =
(from i in dbconnect.tblAnswerLists
where i.StudentNum == studentNumber
select new supervisorAnswerQuesttionPres
{
answerList = _resAnswerList,
questionList = _resQuestionist,
date = ConvertToPersianToShow(i.dateOfAnswer.Value.Date)
}).OrderBy(i => i.date).ToList();

返回此查询的类是这样的:

public class supervisorAnswerQuesttionPres
{
public string date { set; get; }
public List<string> questionList { set; get; }
public List<string> answerList { set; get; }
}

在这个查询中,我使用一个函数将我的日期时间转换为另一个演示文稿我为此使用了这个函数:

public string ConvertToPersianToShow(DateTime? datetime)
{
string date;
DateTime dt;

if (!datetime.HasValue) return "";
dt = datetime.Value;
// dt = datetime;

string year = Convert.ToString(persian_date.GetYear(dt));
string month = Convert.ToString(persian_date.GetMonth(dt));
string day = Convert.ToString(persian_date.GetDayOfMonth(dt));

if (month.Length == 1)
{
month = "0" + Convert.ToString(persian_date.GetMonth(dt));
}

if (day.Length == 1)
{
day = "0" + Convert.ToString(persian_date.GetDayOfMonth(dt));
}

Convert.ToString(persian_date.GetMonth(dt)) + "/" +
+ dt.Minute + ")";
date = year + "/" + month + "/" + day;
return date;
}

这个函数只是转换我的日期时间,但是当我执行查询时我得到了这个错误:

Method 'System.String ConvertToPersianToShow(System.Nullable`1[System.DateTime])' has no supported translation to SQL. 

最佳答案

它试图将查询转换为 SQL,但不知道如何转换 ConvertToPersianToShow 方法。

解决方案是在 where 子句之后调用 ToList() 将实体放入内存,然后执行选择:

var temp = dbconnect.tblAnswerLists
.Where(i => i.StudentNum == studentNumber)
.ToList() // <-- This will bring the data into memory.
.Select(i => new supervisorAnswerQuesttionPres
{
answerList = _resAnswerList,
questionList = _resQuestionist,
date = ConvertToPersianToShow(i.dateOfAnswer.Value.Date)
})
.OrderBy(i => i.date)
.ToList()

当调用 ToList() 时,查询被翻译成 SQL,例如像

SELECT * FROM <table> WHERE StudentNum = '<studentNumber>'

并对数据库执行。当数据返回并且您将其保存在内存中时,您可以使用 LINQ to Objects进一步查询和操作数据。

注意!通常,在添加至少 where 子句之前调用ToList 时应该小心,否则您将结束将太多数据提取到内存中。

关于c# - [System.DateTime])' 没有支持的 SQL 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22071381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com