private static bool RoadVerification(StandardCCTV standardData, string originalMile)
        {
            var strMile         = originalMile.Replace("K", "").Replace("+", ".");
            var douOriginalMile = Convert.ToDouble(strMile);

            if (standardData.StartMile != string.Empty && standardData.EndMile != string.Empty)
            {
                var douStartMile = Convert.ToDouble(standardData.StartMile);
                var douEndMile   = Convert.ToDouble(standardData.EndMile);
                if (douStartMile >= douEndMile)
                {
                    if (douStartMile >= douOriginalMile && douOriginalMile >= douEndMile)
                    {
                        return(true);
                    }
                }
                else
                {
                    if (douEndMile >= douOriginalMile && douOriginalMile >= douStartMile)
                    {
                        return(true);
                    }
                }
            }


            return(false);
        }
        static void Main(string[] args)
        {
            WriteMsg("開始驗證");

            using (Entities db = new Entities())
            {
                using (HttpClient client = new HttpClient())
                {
                    client.Timeout = new TimeSpan(0, 0, 8);
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                    #region Test
                    var            content1      = client.GetAsync($"http://117.56.59.157:8085/THB/Internal/CCTVs/Live").Result.Content;
                    var            json1         = content1.ReadAsStringAsync().Result;
                    List <dynamic> standardData1 = JsonConvert.DeserializeObject <List <dynamic> >(json1);

                    var            content2      = client.GetAsync($"http://117.56.59.157:8085/THB/Internal/CCTVs").Result.Content;
                    var            json2         = content2.ReadAsStringAsync().Result;
                    List <dynamic> standardData2 = JsonConvert.DeserializeObject <List <dynamic> >(json2);
                    #endregion

                    var cameras        = db.cameras.ToList();
                    var cameraMappings = db.cameraroadmapping.ToList();

                    StringBuilder correctMileSB = new StringBuilder("里程正確資料\r\n");
                    StringBuilder errorMileSB   = new StringBuilder("里程錯誤資料\r\n");
                    StringBuilder errorRoadSB   = new StringBuilder("路段錯誤資料\r\n");
                    StringBuilder misOutputSB   = new StringBuilder("CameraID,X,Y,LinkID,RoadName");

                    int countOfCorrectRoad = 0;
                    int errorRoadCount     = 0;

                    int countOfCorrectMile = 0;
                    int countOfErrorMile   = 0;

                    foreach (var c in cameras)
                    {
                        var cm = cameraMappings.FirstOrDefault(x => x.CameraId == c.Id);
                        if (cm != null)
                        {
                            if (c.DisplayName.Contains(cm.RoadName))
                            {
                                countOfCorrectRoad++;
                                StandardCCTV standardData = GetStandardData(client, cm);
                                string       locationMile = TransformLocationMile(c.DisplayName);
                                if (locationMile != null)
                                {
                                    var isCorrect = RoadVerification(standardData, locationMile);
                                    if (isCorrect)
                                    {
                                        countOfCorrectMile++;
                                        correctMileSB.Append($"{countOfCorrectMile}. 公總資料 經緯度:{c.WgsX},{c.WgsY}\t DisplyName:{c.DisplayName}\t\t 交通部API對應資料 RoadName:{standardData.RoadName}\t LinkID:{standardData.LinkID}\t StartMile:{standardData.StartMile}\t EndMile:{standardData.EndMile}\r\n");
                                    }
                                    else
                                    {
                                        countOfErrorMile++;
                                        errorMileSB.Append($"{countOfErrorMile}. 公總資料 經緯度:{c.WgsX},{c.WgsY}\t DisplyName:{c.DisplayName}\t\t 交通部API對應資料 RoadName:{standardData.RoadName}\t LinkID:{standardData.LinkID}\t StartMile:{standardData.StartMile}\t EndMile:{standardData.EndMile}\r\n");
                                        misOutputSB.Append($"\r\n{c.CameraId},{c.WgsX},{c.WgsY},{standardData.LinkID},{standardData.RoadName}");
                                    }
                                }
                            }
                            else
                            {
                                if (!c.DisplayName.Contains(cm.RoadName))
                                {
                                    errorRoadCount++;
                                    misOutputSB.Append($"\r\n{c.CameraId},{c.WgsX},{c.WgsY},{cm.LinkID},{cm.RoadName}");
                                    errorRoadSB.Append($"{errorRoadCount}. 公總資料 經緯度:{c.WgsX},{c.WgsY}\t DisplyName:{c.DisplayName}\t\t 交通部API對應資料 RoadName:{cm.RoadName}\t LinkID:{cm.LinkID}\r\n");
                                }
                            }
                        }
                    }

                    //產生結果
                    using (var correctRoadWritter = new StreamWriter("CCTV_Standard_Same_Road.txt"))
                        using (var errorRoadWritter = new StreamWriter("CCTV_Standard_Miss_Road.txt"))
                            using (var mistakeOutputWritter = new StreamWriter("CCTV_Standard_ErrorData.csv"))
                            {
                                WriteMsg(correctRoadWritter, correctMileSB.ToString());
                                WriteMsg(correctRoadWritter, "\r\n\r\n\r\n");
                                WriteMsg(correctRoadWritter, errorMileSB.ToString());
                                WriteMsg(correctRoadWritter, $"總共{countOfCorrectRoad}個正確");
                                WriteMsg(correctRoadWritter, $"總共{countOfCorrectMile}個Mile正確");
                                WriteMsg(correctRoadWritter, $"總共{countOfErrorMile}個Mile錯誤");

                                WriteMsg(errorRoadWritter, errorRoadSB.ToString());
                                WriteMsg(errorRoadWritter, $"總共{errorRoadCount}個錯誤");
                                WriteMsg(correctRoadWritter, errorRoadWritter, "完成!!");

                                WriteMsg(mistakeOutputWritter, misOutputSB.ToString());
                            }
                }
            }
            WriteMsg("完成");
            Console.ReadKey();
        }