private List <TagPosition> EditTagPositionList(List <Position> positions) { //1.获取列表 List <TagPosition> tagPosList = TagPositions.ToList(); List <TagPosition> changedTagPosList = new List <TagPosition>(); //2.修改数据 for (int i = 0; i < positions.Count; i++) { Position position = positions[i]; if (position == null) { continue; //位置信息可能有null } TagPosition tagPos = tagPosList.Find(item => item.Tag == position.Tag); if (tagPos == null) { continue; } tagPos.Edit(position); if (!changedTagPosList.Contains(tagPos)) { changedTagPosList.Add(tagPos); } } return(changedTagPosList); }
public void AddTagPositionsByTags(List <Tag> tags) { List <TagPosition> tagPosList = TagPositions.ToList();//事先取出全部到内存中,比每次都到数据库中查询快很多。 100个从6.4s->1.8s,1.8s中主要是第一次查询的一些初始工作 List <TagPosition> newPosList = new List <TagPosition>(); foreach (Tag tag in tags) { //TagPosition tagPos = TagPositions.FindByCode(tag.Code);//100个要2s TagPosition tagPos = tagPosList.Find(i => i.Tag == tag.Code);//判断是否存在实时数据 if (tagPos == null) { TagPosition tagPosition = new TagPosition(tag.Code); newPosList.Add(tagPosition); } } //TagPositions.Db.BulkInsert(newPosList);//插件Z.EntityFramework.Extensions功能 //TagPositions.Db.BulkSaveChanges(); foreach (TagPosition tp in newPosList) { TagPositions.Add(tp); } }