// 获取需要更新的资源路径 private void GetUpdateResPaths(ResListInfo onlineResListInfo, ResListInfo curResListInfo, ref List <SingleResInfo> updateList) { if (curResListInfo != null) { if (!onlineResListInfo.Ver.Equals(curResListInfo.Ver)) { // TODO 需要测试一下Linq性能 updateList = onlineResListInfo.Info.Where(onlineData => !curResListInfo.Info.Where(curData => onlineData.Md5 == curData.Md5 && onlineData.Path == curData.Path && onlineData.Status == curData.Status && onlineData.Size == curData.Size).Any()).ToList(); } else { foreach (var item in onlineResListInfo.Info) // TODO 检测文件是否需要更新的计算方式 感觉不是很好(后续有更好的方案再改) { stringBuilder.Clear(); stringBuilder.Append(PathUtility.Instance.GetPersistentDataPath()); stringBuilder.Append("/"); stringBuilder.Append(item.Path); string localFileMd5 = ToolUtility.GetFileMD5Str(stringBuilder.ToString()); if (localFileMd5 != item.Md5) { updateList.Add(item); } } } } else { updateList.AddRange(onlineResListInfo.Info); } }