在lambda linq中将日期转换为持久日期
本文关键字:日期 转换 lambda linq | 更新日期: 2023-09-27 17:59:18
我想将SQL中的保存日期更改为持久日期。我使用linq这是我的代码,但我对milladi2shamsi类有错误
public string Miladi2Shamsi(DateTime _date)
{
PersianCalendar p = new PersianCalendar();
DateTime dmiladi = new DateTime();
DateTime sp = new DateTime();
dmiladi = _date;
sp = Convert.ToDateTime
(p.GetYear(dmiladi).ToString() + " " + p.GetMonth(dmiladi).ToString()
+ " " + p.GetDayOfMonth(dmiladi).ToString() + " "
+ p.GetDayOfWeek(dmiladi).ToString() + " ");
return sp.ToString("yyyy/MM/dd");
}
这是我的类,用于将日期更改为保存在sqlmiladidate中的持久日期
var q = db.Kharidars.Join(db.Factor_kharidars, c => c.Id, o =>
o.Id_kharidar_bes, (c, o) => new
{
o.Row,
c.Coname,
Miladi2Shamsi(o.Date),
o.Id_kharidar
})Where(i => i.Id_kharidar
== Guid.Parse(txtid.Text)).Where(i => i.Date >= Convert.ToDateTime(datenow.Value.ToString("yyyy-MM-dd")));
将您的函数更改为:
public string Miladi2Shamsi(DateTime _date)
{
PersianCalendar p = new PersianCalendar();
string sp = string.Format("{0}/{1}/{2}",
p.GetYear(_date).ToString(),
p.GetMonth(_date).ToString("00"),
p.GetDayOfMonth(_date).ToString("00"));
return sp;
}
由于您已将datetime保存为数据库中的datetime,所以在where语句中,只需检查datetime值,我的意思是
.Where(i => i.Date >= datenow.Value);
在具体化之前,不能在SQL-2-Linq表达式中使用c#。
即添加一个。ToList(),然后。其中(xxxx)
无论如何,这将在筛选之前将所有行下载到服务器,并且对于大数据来说可能会很慢。