我想找出 SQL Server 中两个列之间的区别,它们是仅使用 C# 代码和无 LINQ 的 DataTime 类型。public class PrintTheQ{ public DateTime LastStatusUpdate { get; set; } public DateTime AddedToQueue { get; set; }}public static PrintTheQ TestQ (){ PrintTheQ TheQ = new PrintTheQ(); string CS = "data source =(local); database = Sample1; Integrated Security=SSPI"; using (SqlConnection connection = new SqlConnection(CS)) { connection.Open(); SqlCommand command = new SqlCommand("select *from TelecomTable WHERE AddedToQueue >= DATEADD (day, -2, GetDate()) ", connection); using (SqlDataReader reader = command.ExecuteReader()) { TheQ.AddedToQueue = Convert.ToDateTime((reader, "AddedToQueue")); TheQ.LastStatusUpdate = Convert.ToDateTime((reader, "LastStatusUpdate")); } } return TheQ;}
2 回答

隔江千里
TA贡献1906条经验 获得超10个赞
按照您的要求不在数据库级别处理此任务并且不使用 linq,那么您需要的只是向您的类添加一个属性,并且每次您需要读取它时都会计算此属性(如果您想更改它,则只获取,然后改变操作数)
只需向您的班级添加一个只读属性
public class PrintTheQ
{
public DateTime LastStatusUpdate { get; set; }
public DateTime AddedToQueue { get; set; }
public int DayDiff
{
get {return (int)(LastStatusUpdate - AddedToQueue).TotalDays;}
}
}
此示例计算天数差异,但当然,从最低日期减去最高日期创建的TimeSpan 结构也可以为您提供 TotalHours、TotalMinutes、TotalSeconds、TotalMilliseconds 甚至 Ticks 方面的差异
这可能是做这件事最合乎逻辑的方法。没有 foreach 对当前代码的影响最小,没有要更改的数据库代码,没有更改您的实际加载代码。此外,如果您更改 LastStatusUpdate 的值,则 DayDiff 属性将在您下次阅读时自动重新计算。
- 2 回答
- 0 关注
- 90 浏览
添加回答
举报
0/150
提交
取消