突然意識到文字的重要性,於是開始寫了第一個篇博客,博客目的緊緊為記錄,以便溫故。 同時也希望拋磚能達到引玉的作用,歡迎各位來發表自己的感想與想法,以此達到相互學習促進! 背景: 在做百度地圖電子圍欄的時候,一條圍欄內包含人員的設置是直接通過更新圍欄表(Fence)內FenceUser欄位(數據格式: ...
突然意識到文字的重要性,於是開始寫了第一個篇博客,博客目的緊緊為記錄,以便溫故。
同時也希望拋磚能達到引玉的作用,歡迎各位來發表自己的感想與想法,以此達到相互學習促進!
背景:
在做百度地圖電子圍欄的時候,一條圍欄內包含人員的設置是直接通過更新圍欄表(Fence)內FenceUser欄位(數據格式:1,3,7)來實現的,同時更新User表對應ID(1,3,7)的是否設置電子圍欄的標識FenceFlag(0 or 1)
所以需要比較前臺傳過來的對應ID值和資料庫中ID對應值的非公有部分再去統一把User表的FenceFlag標記取反
1 DBConn db = new DBConn(); 2 var fencelist = (from b in db.Fence.AsNoTracking() where b.fenceId == fenceID select b).ToList(); 3 string fenceusers = fencelist[0].fenceUsers; 4 string[] users = fenceusers.Split(','); 5 string[] arraymembers = ArraymembersToid.Split(','); 6 var listTemp = users.Concat(arraymembers).Except(users.Intersect(arraymembers)).ToList(); 7 var list = listTemp.Select<string, int>(q => Convert.ToInt32(q)); 8 var userFenceFlag = db.Users.Where(p => list.Any(a => a.Equals(p.id))).ToList(); 9 if (userFenceFlag.Count > 0) 10 { 11 foreach (Users user in userFenceFlag) 12 { 13 user.FenceFlag = -(user.FenceFlag - 1); 14 } 15 db.SaveChanges(); 16 17 }View Code
關鍵字:
集合
Intersect:交集
Except:差集(A差B指的是A中與B中的不同而非AB全部的不同)
Concat:合集(AB全部值,包含重覆)
EF
Any:類似於SQL中的IN