MongoDbHelper 帮助类(上)

在网上搜索mongodbHelper的帮助类时,出来的东西都大同小异,再此摘录一下。

这些代码也看了一遍,总是感觉重复的代码太多了,在后续的文章中又整合了一下,请看下篇,欢迎指正!

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using MongoDB.Driver;
  6 using MongoDB.Bson;
  7 using MongoDB.Driver.Builders;
  8 namespace MongoDbTest
  9 {
 10     /// <summary>
 11     /// mongodb的封装类。
 12     /// add by yancong2008@gmail.com 2011.05.14
 13     /// </summary>
 14     public sealed class MongoDBHelper
 15     //public sealed class MongoDBHelper<T>
 16     //where T :class
 17     {
 18         public static readonly string connectionString_Default = System.Configuration.ConfigurationManager.AppSettings["ConnectionString_mongoDB"];// mongodb://192.168.0.220:27017/effmaster
 19         public static readonly string database_Default = System.Configuration.ConfigurationManager.AppSettings["Database_mongoDB"];      
 20 
 21         #region 新增
 22         public static SafeModeResult InsertOne<T>(string collectionName, T entity)
 23         {
 24             return InsertOne<T>(connectionString_Default, database_Default, collectionName, entity);
 25         }
 26         public static SafeModeResult InsertOne<T>(string connectionString, string databaseName, string collectionName, T entity)
 27         {
 28             SafeModeResult result = null;//new SafeModeResult();
 29             if (null == entity)
 30             {
 31                 return null;
 32             }
 33             MongoServer server = MongoServer.Create(connectionString);
 34             //获取数据库或者创建数据库(不存在的话)。
 35             MongoDatabase database = server.GetDatabase(databaseName);
 36             using (server.RequestStart(database))//开始连接数据库。
 37             {
 38                 MongoCollection<BsonDocument> myCollection = database.GetCollection<BsonDocument>(collectionName);
 39                 result = myCollection.Insert(entity);
 40             }
 41             return result;
 42         }
 43         public static IEnumerable<SafeModeResult> InsertAll<T>(string collectionName, IEnumerable<T> entitys)
 44         {
 45             return MongoDBHelper.InsertAll<T>(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, entitys);
 46         }
 47         public static IEnumerable<SafeModeResult> InsertAll<T>(string connectionString, string databaseName, string collectionName, IEnumerable<T> entitys)
 48         {
 49             IEnumerable<SafeModeResult> result = null;
 50             if (null == entitys)
 51             {
 52                 return null;
 53             }
 54             MongoServer server = MongoServer.Create(connectionString);
 55             //获取数据库或者创建数据库(不存在的话)。
 56             MongoDatabase database = server.GetDatabase(databaseName);
 57             using (server.RequestStart(database))//开始连接数据库。
 58             {
 59                 MongoCollection<BsonDocument> myCollection = database.GetCollection<BsonDocument>(collectionName);
 60                 result = myCollection.InsertBatch(entitys);
 61             }
 62             return result;
 63         }
 64         #endregion
 65         #region 修改
 66         public static SafeModeResult Save<T>(string collectionName, T entity)
 67         {
 68             return MongoDBHelper.Save<T>(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, entity);
 69         }
 70         public static SafeModeResult Save<T>(string connectionString, string databaseName, string collectionName, T entity)
 71         {
 72             MongoServer server = MongoServer.Create(connectionString);
 73             //获取数据库或者创建数据库(不存在的话)。
 74             MongoDatabase database = server.GetDatabase(databaseName);
 75             SafeModeResult result;
 76             using (server.RequestStart(database))//开始连接数据库。
 77             {
 78                 MongoCollection<BsonDocument> myCollection = database.GetCollection<BsonDocument>(collectionName);
 79                 result = myCollection.Save(entity);
 80             }
 81             return result;
 82         }
 83 
 84         /// <summary>
 85         /// 
 86         /// </summary>
 87         /// <typeparam name="T"></typeparam>
 88         /// <param name="collectionName"></param>
 89         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
 90         /// <param name="update">更新设置。调用示例:Update.Set("Title", "yanc") 或者 Update.Set("Title", "yanc").Set("Author", "yanc2") 等等</param>
 91         /// <returns></returns>
 92         public static SafeModeResult UpdateOne<T>(string collectionName, IMongoQuery query, IMongoUpdate update)
 93         {
 94             return MongoDBHelper.UpdateOne<T>(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, query, update);
 95         }
 96         /// <summary>
 97         /// 
 98         /// </summary>
 99         /// <typeparam name="T"></typeparam>
100         /// <param name="connectionString"></param>
101         /// <param name="databaseName"></param>
102         /// <param name="collectionName"></param>
103         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
104         /// <param name="update">更新设置。调用示例:Update.Set("Title", "yanc") 或者 Update.Set("Title", "yanc").Set("Author", "yanc2") 等等</param>
105         /// <returns></returns>
106         public static SafeModeResult UpdateOne<T>(string connectionString, string databaseName, string collectionName, IMongoQuery query, IMongoUpdate update)
107         {
108             SafeModeResult result;
109             if (null == query || null == update)
110             {
111                 return null;
112             }
113             MongoServer server = MongoServer.Create(connectionString);
114             //获取数据库或者创建数据库(不存在的话)。
115             MongoDatabase database = server.GetDatabase(databaseName);
116             using (server.RequestStart(database))//开始连接数据库。
117             {
118                 MongoCollection<BsonDocument> myCollection = database.GetCollection<BsonDocument>(collectionName);
119                 result = myCollection.Update(query, update, UpdateFlags.None);
120             }
121             return result;
122         }
123 
124         /// <summary>
125         /// 
126         /// </summary>
127         /// <typeparam name="T"></typeparam>
128         /// <param name="collectionName"></param>
129         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
130         /// <param name="update">更新设置。调用示例:Update.Set("Title", "yanc") 或者 Update.Set("Title", "yanc").Set("Author", "yanc2") 等等</param>
131         /// <returns></returns>
132         public static SafeModeResult UpdateAll<T>(string collectionName, IMongoQuery query, IMongoUpdate update)
133         {
134             return MongoDBHelper.UpdateAll<T>(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, query, update);
135         }
136         /// <summary>
137         /// 
138         /// </summary>
139         /// <typeparam name="T"></typeparam>
140         /// <param name="connectionString"></param>
141         /// <param name="databaseName"></param>
142         /// <param name="collectionName"></param>
143         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
144         /// <param name="update">更新设置。调用示例:Update.Set("Title", "yanc") 或者 Update.Set("Title", "yanc").Set("Author", "yanc2") 等等</param>
145         /// <returns></returns>
146         public static SafeModeResult UpdateAll<T>(string connectionString, string databaseName, string collectionName, IMongoQuery query, IMongoUpdate update)
147         {
148             SafeModeResult result;
149             if (null == query || null == update)
150             {
151                 return null;
152             }
153             MongoServer server = MongoServer.Create(connectionString);
154             //获取数据库或者创建数据库(不存在的话)。
155             MongoDatabase database = server.GetDatabase(databaseName);
156             using (server.RequestStart(database))//开始连接数据库。
157             {
158                 MongoCollection<BsonDocument> myCollection = database.GetCollection<BsonDocument>(collectionName);
159                 result = myCollection.Update(query, update, UpdateFlags.Multi);
160             }
161             return result;
162         }
163         #endregion
164         #region 删除
165         public static SafeModeResult Delete(string collectionName, string _id)
166         {
167             return MongoDBHelper.Delete(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, _id);
168         }
169         public static SafeModeResult Delete(string connectionString, string databaseName, string collectionName, string _id)
170         {
171             SafeModeResult result;
172             ObjectId id;
173             if (!ObjectId.TryParse(_id, out id))
174             {
175                 return null;
176             }
177             MongoServer server = MongoServer.Create(connectionString);
178             //获取数据库或者创建数据库(不存在的话)。
179             MongoDatabase database = server.GetDatabase(databaseName);
180             using (server.RequestStart(database))//开始连接数据库。
181             {
182                 MongoCollection<BsonDocument> myCollection = database.GetCollection<BsonDocument>(collectionName);
183                 result = myCollection.Remove(Query.EQ("_id", id));
184             }
185             return result;
186         }
187         public static SafeModeResult DeleteAll(string collectionName)
188         {
189             return MongoDBHelper.DeleteAll(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, null);
190         }
191         /// <summary>
192         /// 
193         /// </summary>
194         /// <param name="collectionName"></param>
195         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
196         /// <returns></returns>
197         public static SafeModeResult DeleteAll(string collectionName, IMongoQuery query)
198         {
199             return MongoDBHelper.DeleteAll(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, query);
200         }
201         /// <summary>
202         /// 
203         /// </summary>
204         /// <param name="connectionString"></param>
205         /// <param name="databaseName"></param>
206         /// <param name="collectionName"></param>
207         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
208         /// <returns></returns>
209         public static SafeModeResult DeleteAll(string connectionString, string databaseName, string collectionName, IMongoQuery query)
210         {
211             MongoServer server = MongoServer.Create(connectionString);
212             //获取数据库或者创建数据库(不存在的话)。
213             MongoDatabase database = server.GetDatabase(databaseName);
214             SafeModeResult result;
215             using (server.RequestStart(database))//开始连接数据库。
216             {
217                 MongoCollection<BsonDocument> myCollection = database.GetCollection<BsonDocument>(collectionName);
218                 if (null == query)
219                 {
220                     result = myCollection.RemoveAll();
221                 }
222                 else
223                 {
224                     result = myCollection.Remove(query);
225                 }
226             }
227             return result;
228         }
229         #endregion
230         #region 获取单条信息
231         public static T GetOne<T>(string collectionName, string _id)
232         {
233             return MongoDBHelper.GetOne<T>(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, _id);
234         }
235         public static T GetOne<T>(string connectionString, string databaseName, string collectionName, string _id)
236         {
237             T result = default(T);
238             ObjectId id;
239             if (!ObjectId.TryParse(_id, out id))
240             {
241                 return default(T);
242             }
243             MongoServer server = MongoServer.Create(connectionString);
244             //获取数据库或者创建数据库(不存在的话)。
245             MongoDatabase database = server.GetDatabase(databaseName);
246             using (server.RequestStart(database))//开始连接数据库。
247             {
248                 MongoCollection<BsonDocument> myCollection = database.GetCollection<BsonDocument>(collectionName);
249                 result = myCollection.FindOneAs<T>(Query.EQ("_id", id));
250             }
251             return result;
252         }
253         /// <summary>
254         /// 
255         /// </summary>
256         /// <typeparam name="T"></typeparam>
257         /// <param name="collectionName"></param>
258         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
259         /// <returns></returns>
260         public static T GetOne<T>(string collectionName, IMongoQuery query)
261         {
262             return GetOne<T>(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, query);
263         }
264         /// <summary>
265         /// 
266         /// </summary>
267         /// <typeparam name="T"></typeparam>
268         /// <param name="connectionString"></param>
269         /// <param name="databaseName"></param>
270         /// <param name="collectionName"></param>
271         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
272         /// <returns></returns>
273         public static T GetOne<T>(string connectionString, string databaseName, string collectionName, IMongoQuery query)
274         {
275             MongoServer server = MongoServer.Create(connectionString);
276             //获取数据库或者创建数据库(不存在的话)。
277             MongoDatabase database = server.GetDatabase(databaseName);
278             T result = default(T);
279             using (server.RequestStart(database))//开始连接数据库。
280             {
281                 MongoCollection<BsonDocument> myCollection = database.GetCollection<BsonDocument>(collectionName);
282                 if (null == query)
283                 {
284                     result = myCollection.FindOneAs<T>();
285                 }
286                 else
287                 {
288                     result = myCollection.FindOneAs<T>(query);
289                 }
290             }
291             return result;
292         }
293         #endregion
294         #region 获取多个
295         public static List<T> GetAll<T>(string collectionName)
296         {
297             return MongoDBHelper.GetAll<T>(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName);
298         }
299         /// <summary>
300         /// 如果不清楚具体的数量,一般不要用这个函数。
301         /// </summary>
302         /// <typeparam name="T"></typeparam>
303         /// <param name="collectionName"></param>
304         /// <returns></returns>
305         public static List<T> GetAll<T>(string connectionString, string databaseName, string collectionName)
306         {
307             MongoServer server = MongoServer.Create(connectionString);
308             //获取数据库或者创建数据库(不存在的话)。
309             MongoDatabase database = server.GetDatabase(databaseName);
310             List<T> result = new List<T>();
311             using (server.RequestStart(database))//开始连接数据库。
312             {
313                 MongoCollection<BsonDocument> myCollection = database.GetCollection<BsonDocument>(collectionName);
314                 foreach (T entity in myCollection.FindAllAs<T>())
315                 {
316                     result.Add(entity);
317                 }
318             }
319             return result;
320         }
321         public static List<T> GetAll<T>(string collectionName, int count)
322         {
323             return MongoDBHelper.GetAll<T>(collectionName, count, null, null);
324         }
325         /// <summary>
326         /// 
327         /// </summary>
328         /// <typeparam name="T"></typeparam>
329         /// <param name="collectionName"></param>
330         /// <param name="count"></param>
331         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
332         /// <returns></returns>
333         public static List<T> GetAll<T>(string collectionName, int count, IMongoQuery query)
334         {
335             return MongoDBHelper.GetAll<T>(collectionName, count, query, null);
336         }
337         /// <summary>
338         /// 
339         /// </summary>
340         /// <typeparam name="T"></typeparam>
341         /// <param name="collectionName"></param>
342         /// <param name="count"></param>
343         /// <param name="sortBy">排序用的。调用示例:SortBy.Descending("Title") 或者 SortBy.Descending("Title").Ascending("Author")等等</param>
344         /// <returns></returns>
345         public static List<T> GetAll<T>(string collectionName, int count, IMongoSortBy sortBy)
346         {
347             return MongoDBHelper.GetAll<T>(collectionName, count, null, sortBy);
348         }
349         /// <summary>
350         /// 
351         /// </summary>
352         /// <typeparam name="T"></typeparam>
353         /// <param name="collectionName"></param>
354         /// <param name="count"></param>
355         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
356         /// <param name="sortBy">排序用的。调用示例:SortBy.Descending("Title") 或者 SortBy.Descending("Title").Ascending("Author")等等</param>
357         /// <param name="fields">只返回所需要的字段的数据。调用示例:"Title" 或者 new string[] { "Title", "Author" }等等</param>
358         /// <returns></returns>
359         public static List<T> GetAll<T>(string collectionName, int count, IMongoQuery query, IMongoSortBy sortBy, params string[] fields)
360         {
361             var page = 1;
362             var pageSize = count;
363             return MongoDBHelper.GetAll<T>(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, query, page, pageSize, sortBy, fields);
364         }
365         /// <summary>
366         /// 
367         /// </summary>
368         /// <typeparam name="T"></typeparam>
369         /// <param name="collectionName"></param>
370         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
371         /// <param name="pagerInfo"></param>
372         /// <returns></returns>
373         public static List<T> GetAll<T>(string collectionName, IMongoQuery query, int page, int pageSize)
374         {
375             return MongoDBHelper.GetAll<T>(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, query, page, pageSize, null);
376         }
377         /// <summary>
378         /// 
379         /// </summary>
380         /// <typeparam name="T"></typeparam>
381         /// <param name="collectionName"></param>
382         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
383         /// <param name="pagerInfo"></param>
384         /// <param name="sortBy">排序用的。调用示例:SortBy.Descending("Title") 或者 SortBy.Descending("Title").Ascending("Author")等等</param>
385         /// <returns></returns>
386         public static List<T> GetAll<T>(string collectionName, IMongoQuery query, int page, int pageSize, IMongoSortBy sortBy)
387         {
388             return MongoDBHelper.GetAll<T>(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, query, page, pageSize, sortBy);
389         }
390         /// <summary>
391         /// 
392         /// </summary>
393         /// <typeparam name="T"></typeparam>
394         /// <param name="collectionName"></param>
395         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
396         /// <param name="pagerInfo"></param>
397         /// <param name="fields">只返回所需要的字段的数据。调用示例:"Title" 或者 new string[] { "Title", "Author" }等等</param>
398         /// <returns></returns>
399         public static List<T> GetAll<T>(string collectionName, IMongoQuery query, int page, int pageSize, params string[] fields)
400         {
401             return MongoDBHelper.GetAll<T>(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, query, page, pageSize, null, fields);
402         }
403         /// <summary>
404         /// 
405         /// </summary>
406         /// <typeparam name="T"></typeparam>
407         /// <param name="collectionName"></param>
408         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
409         /// <param name="pagerInfo"></param>
410         /// <param name="sortBy">排序用的。调用示例:SortBy.Descending("Title") 或者 SortBy.Descending("Title").Ascending("Author")等等</param>
411         /// <param name="fields">只返回所需要的字段的数据。调用示例:"Title" 或者 new string[] { "Title", "Author" }等等</param>
412         /// <returns></returns>
413         public static List<T> GetAll<T>(string collectionName, IMongoQuery query, int page, int pageSize, IMongoSortBy sortBy, params string[] fields)
414         {
415             return MongoDBHelper.GetAll<T>(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, query, page, pageSize, sortBy, fields);
416         }
417         /// <summary>
418         /// 
419         /// </summary>
420         /// <typeparam name="T"></typeparam>
421         /// <param name="connectionString"></param>
422         /// <param name="databaseName"></param>
423         /// <param name="collectionName"></param>
424         /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
425         /// <param name="pagerInfo"></param>
426         /// <param name="sortBy">排序用的。调用示例:SortBy.Descending("Title") 或者 SortBy.Descending("Title").Ascending("Author")等等</param>
427         /// <param name="fields">只返回所需要的字段的数据。调用示例:"Title" 或者 new string[] { "Title", "Author" }等等</param>
428         /// <returns></returns>
429         public static List<T> GetAll<T>(string connectionString, string databaseName, string collectionName, IMongoQuery query, int page, int pageSize, IMongoSortBy sortBy, params string[] fields)
430         {
431             MongoServer server = MongoServer.Create(connectionString);
432             //获取数据库或者创建数据库(不存在的话)。
433             MongoDatabase database = server.GetDatabase(databaseName);
434             List<T> result = new List<T>();
435             using (server.RequestStart(database))//开始连接数据库。
436             {
437                 MongoCollection<BsonDocument> myCollection = database.GetCollection<BsonDocument>(collectionName);
438                 MongoCursor<T> myCursor;
439                 if (null == query)
440                 {
441                     myCursor = myCollection.FindAllAs<T>();
442                 }
443                 else
444                 {
445                     myCursor = myCollection.FindAs<T>(query);
446                 }
447                 if (null != sortBy)
448                 {
449                     myCursor.SetSortOrder(sortBy);
450                 }
451                 if (null != fields)
452                 {
453                     myCursor.SetFields(fields);
454                 }
455                 foreach (T entity in myCursor.SetSkip((page - 1) * pageSize).SetLimit(pageSize))//.SetSkip(100).SetLimit(10)是指读取第一百条后的10条数据。
456                 {
457                     result.Add(entity);
458                 }
459             }
460             return result;
461         }
462         #endregion
463         #region 索引
464         public static void CreateIndex(string collectionName, params string[] keyNames)
465         {
466             MongoDBHelper.CreateIndex(MongoDBHelper.connectionString_Default, MongoDBHelper.database_Default, collectionName, keyNames);
467         }
468         public static void CreateIndex(string connectionString, string databaseName, string collectionName, params string[] keyNames)
469         {
470             SafeModeResult result = null;// new SafeModeResult();
471             if (null == keyNames)
472             {
473                 return;
474             }
475             MongoServer server = MongoServer.Create(connectionString);
476             //获取数据库或者创建数据库(不存在的话)。
477             MongoDatabase database = server.GetDatabase(databaseName);
478             using (server.RequestStart(database))//开始连接数据库。
479             {
480                 MongoCollection<BsonDocument> myCollection = database.GetCollection<BsonDocument>(collectionName);
481                 if (!myCollection.IndexExists(keyNames))
482                 {
483                     myCollection.EnsureIndex(keyNames);
484                 }
485             }
486         }
487         #endregion
488     }
489 }
原文地址:https://www.cnblogs.com/xishuqingchun/p/4962082.html