亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

查詢以根據時間戳條件提取數據

查詢以根據時間戳條件提取數據

C#
瀟瀟雨雨 2021-05-06 18:19:50
我正在構建ac#應用程序,其中它必須讀取以下格式的數據。列1列2列3時間戳   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秒。例如:假設我要讀取滿足以下時間戳條件的IN列3值。時間戳差異(TimeDiff)上限時間戳(TimeUpper)下限時間戳(TimeLower)TimeDiff> = 30秒TimeUpper = 2017-04-25 14:16:30.000 TimeLower = 2017-04-25 14:15:30.000并且輸出應如下所示Column3 89整個想法是從數據庫中提取數據點的特定時間窗口(兩次時間戳之間),在該窗口中,我可以使用Timediff作為控制參數來調整readIN的值。我知道我可以在SQL Server中使用CTE來實現這種邏輯,但是我對C#LINQ to SQL迷失了。如何用C#編寫邏輯?使用LINQ任何建議,想法將非常有幫助先感謝您。
查看完整描述

2 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

   string delimiter = ",";


        string sTimeUpper = "2017-04-25 14:16:30.000";

        string sTimeLower = "2017-04-25 14:15:30.000";


        DateTime TimeUpper = DateTime.Parse(sTimeUpper);

        DateTime TimeLower = DateTime.Parse(sTimeLower);


        Console.WriteLine($"TimeLower = {TimeLower}");

        Console.WriteLine($"TimeUpper = {TimeUpper}");


        List<string> res = (File.ReadAllLines(@"TimeStamp.txt")

            .Skip(1)

            .Select(line => line.Split(delimiter.ToCharArray(), StringSplitOptions.RemoveEmptyEntries))

            .Where(fields => DateTime.Parse(fields[3]) > TimeLower && DateTime.Parse(fields[3]) < TimeUpper)

            .Select(fields => string.Join(",", fields))

            .ToList<string>());


        Console.WriteLine("Requested readings:");


        foreach (string item in res)

        {

            Console.WriteLine(item);

        }


查看完整回答
反對 回復 2021-05-16
  • 2 回答
  • 0 關注
  • 279 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號