我正在构建一个c#应用程序,它必须以下列格式读取数据。
Column1 Column2 Column3 TimeStamp 10 20 30 2017-04-25 14:15:00.000 12 30 40 2017-04-25 14:15:15.000 55 54 89 2017-04-25 14:15:30.000 66 78 11 2017-04-25 14:15:45.000 12 30 40 2017-04-25 14:16:00.000 55 54 89 2017-04-25 14:16:15.000 66 78 11 2017-04-25 14:16:30.000
时间戳的格式为
yyyy-mm-dd hh:mm:ss
每15秒记录一次数据。因此,任何连续两行的时间戳之间的差异应为15秒。
例如:假设我想读取满足以下时间戳条件的第3列值。
下限TimeStamp(TimeLower)
TimeDiff> = 30秒 TimeUpper = 2017-04-25 14:16:30.000 TimeLower = 2017-04-25 14:15:30.000
,输出应该如下所示
Column3
89
整个想法是从数据库中提取数据点的某个时间窗口(在两次时间戳之间),我可以使用Timediff作为我的控制参数调整我读取的值。
我知道我可以在SQL服务器中使用CTE来实现这个逻辑,但我已经失去了C#LINQ to SQL。
如何在C#中编写逻辑?使用LINQ
任何建议,想法都会非常有用
提前谢谢。
答案 0 :(得分:0)
called
答案 1 :(得分:0)
解决方案取决于您的需要。我的是这样的 如果timestamp列已经是DateTime格式,那么您可以使用
int secondDiff = 30;
DateTime timeUpper = DateTime.Parse("2017-04-25 14:16:30.000");
DateTime timeLower = DateTime.Parse("2017-04-25 14:15:30.000");
List<string> results = yourContext.TableName.AsEnumerable()
.Where(t => t.TimeStamp.AddSeconds(secondDiff) <= timeUpper &&
t.TimeStamp.AddSeconds(-secondDiff) >= timeLower);
.Select(t => t.Column3).ToList();
// Output is { 89 }