Re: [問題] 指定Datatable幾行的某個欄位塞入某值...

看板C_Sharp (C#)作者 (靖)時間9年前 (2015/08/29 23:44), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《don750421 (1+1≠2)》之銘言: : 因為需要把以上的資料存入DB,所以原本的想法是.... : ... : 但是,想問問有沒有其他快速的方式...? : 例如,可以指定DataTable Row0~Row3 的 地區欄位 等於 Kaohsiung ...之類的方式... : 或許可以透過LINQ or Lambda ? : 請各位前輩賜教..謝謝 稍微想了一下 發現這事情用LINQ不會比較簡單 如果不是functional programming的信徒的話 建議還是用一步一步慢慢做的方式 比較好懂 好維護 以下程式碼 failData是失敗的資料 SuccessGroupData.towns Key是PK Value是地名 SuccessGroupData.IDs Key是FK 對應到towns的PK Value是資料 static void Main(string[] args) { string data = @" S124452984 A123408743 B342423424 Kaohsiung G324234503 Tainan E342542543 O325405453 R324329842 Taitung Taitung S324325325 Q308956456 Y324234234 W453534534"; var datas = data.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); var q = datas.Aggregate(new { temp = new LinkedList<string>(), groupData = new Dictionary<string, List<string>>() }, (a, b) => { if (b.Length == 10) { a.temp.AddLast(b); } else { List<string> ID; if (a.groupData.TryGetValue(b, out ID)) { ID.AddRange(a.temp); } else { a.groupData.Add(b, a.temp.ToList()); } a.temp.Clear(); } return a; }, x => new { failData = x.temp.ToList(), SuccessGroupData = Enumerable.Range(1, x.groupData.Count) .Zip(x.groupData, (townPK, groupData) => new { townPK, groupData }).Select(y => new { town = new KeyValuePair<int, string> (y.townPK, y.groupData.Key), IDs = y.groupData.Value .Select(ID => new KeyValuePair<int, string>(y.townPK, ID)) }).Aggregate(new { towns = new Dictionary<int, string>(), IDs = new List<KeyValuePair<int, string>>() }, (a, b) => { a.towns.Add(b.town.Key, b.town.Value); a.IDs.AddRange(b.IDs); return a; }) }); foreach (var item in q.failData) { Console.WriteLine(item); } foreach (var item in q.SuccessGroupData.IDs) { Console.WriteLine(item.Key.ToString() + ":" + item.Value); } foreach (var item in q.SuccessGroupData.towns) { Console.WriteLine(item.Key.ToString() + ":" + item.Value); } } 寫到這麼複雜有可能是我FP的功力不足 我如果在工作的code裡看到這種程式碼應該會崩潰 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.217.218 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1440863096.A.D1A.html
文章代碼(AID): #1LuTDuqQ (C_Sharp)
文章代碼(AID): #1LuTDuqQ (C_Sharp)