/// <summary> /// 遍歷屬性 只讓"部分"符合條件者賦值 /// 當我物件長得有夠像,且賦值來源又都差不多的時候 /// </summary> public void ObjectFiltSetValue() { //資料參考 //google 關鍵字 C#遍歷物件屬性 //如果我要賦值 https://www.itread01.com/content/1546423213.html //如果我只是要讀取 https://tedliou.com/archives/csharp-read-all-class-field-by-loop/ var item = new NameAlikeModel(); var value = new ValuesFromMeModel() { ValueIsString = "111", ValuelikeString = "222", ValueString = "333" }; System.Reflection.PropertyInfo[] properties = item.GetType().GetProperties(); for (int i = 0; i < properties.Length; i++) { var properity = item.GetType().GetProperty($"weAreAlike{i + 1}"); //SetValue 是 PropertyInfo[]原生語法 properity.SetValue(item, value.ValuelikeString); } var result = item; var cardData = new NameAlikeModel(); PropertyInfo[] cardDataPara = cardData.GetType().GetProperties(); for (int j = 0; j < 10; j++) { cardData.GetType().GetProperty($"WKMALKNDNM6C{j + 1}").SetValue(cardData, ""); cardData.GetType().GetProperty($"MYMAILNO20X{j + 1}").SetValue(cardData, ""); cardData.GetType().GetProperty($"WK_IMPDATE{j + 1}").SetValue(cardData, ""); } //var BoxMailKindArr = new[] { "1", "2", "3", "5", "6", "7", "8", "10", "9A", "11", "BC", "DE", "H", "P" }; //var LostMailKindArr = new[] { "1", "2", "3", "5", "6", "7", "8", "9A", "10", "11", "BC", "DE", "F", "G", "H", "P" }; //var StateCodeArr = new[] { "1", "2", "3", "4" }; //foreach (var s in StateCodeArr) //{ // foreach (var k in LostMailKindArr) // { // if (s == "1") // { // var bxCnt = BoxMails.Where(o => o.STACODE != "D" && o.MALKND == k).Count(); // var lmCnt = LostMails.Where(o => o.STACODE != "D" && o.MALKND == k).Count(); // ReportPara.GetType().GetProperty($"BXMALKND_{k}_1_7")?.SetValue(ReportPara, bxCnt); // ReportPara.GetType().GetProperty($"LMMALKND_{k}_1_7")?.SetValue(ReportPara, bxCnt); // } // else // { // var bxCnt = BoxMails.Where(o => o.STACODE == s && o.MALKND == k).Count(); // var lmCnt = LostMails.Where(o => o.STACODE == s && o.MALKND == k).Count(); // ReportPara.GetType().GetProperty($"BXMALKND_{k}_{s}_7")?.SetValue(ReportPara, bxCnt); // ReportPara.GetType().GetProperty($"LMMALKND_{k}_{s}_7")?.SetValue(ReportPara, lmCnt); // } // } //} }
/// <summary> /// 通過遍歷屬性賦值 /// 練習計時器使用 /// </summary> /// <returns></returns> private NameAlikeModel SetValues(List <string> listStr) { StopWatch = new Stopwatch(); //Mytimer.Enabled = true; //啟動計時器 MyTimer.Interval = 1000; //設定計時器時間間隔,單位為ms //Mytimer.Start(); //重新計時 Console.WriteLine("重新計時"); StopWatch.Start();//重新計時 var item = new NameAlikeModel(); // Thread.Sleep(10000); //等個10秒看有沒有跑10秒 Thread.Sleep(100); //等個0.1秒看有沒有跑0.1秒 System.Reflection.PropertyInfo[] properties = item.GetType().GetProperties(); for (int i = 0; i < properties.Length; i++) { //遍歷物件 賦值1~物件數量數 properties[i].SetValue(item, listStr[i]); } Console.WriteLine("停止計時"); //Mytimer.Stop(); //停止計時 StopWatch.Stop(); //停止計時 // Get the elapsed time as a TimeSpan value. TimeSpan ts = StopWatch.Elapsed; //Format and display the TimeSpan value. 可以格式化初耗時毫秒、微秒 string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10); Console.WriteLine("RunTime " + elapsedTime); return(item); }