SHILY

Удаление элементов IZennoList из другого IZennoList

Jan 20th, 2021 (edited)
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.81 KB | None | 0 0
  1. //Примеры удаления списка из списка:
  2. /*Объявляем наши списки*/
  3. var ListToDelete = project.Lists["Мой зенно список который нужно удалить"];
  4. var ListFromWhichToRemove = project.Lists["Мой зенно список из которого нужно удалить элементы другого списка"];
  5.  
  6. /*Удалить список из списка (все точные совпадения).*/
  7. lock (SyncObjects.ListSyncer)
  8. {
  9.     for (int i = 0; i < ListToDelete.Count; i++)
  10.     {
  11.         if (i == ListToDelete.Count || ListToDelete.Count == 0) break;
  12.  
  13.         for (int f = 0; f < ListFromWhichToRemove.Count;)
  14.         {
  15.             if (f == ListFromWhichToRemove.Count || ListFromWhichToRemove.Count == 0) break;
  16.  
  17.             if (ListFromWhichToRemove[f].Equals(ListToDelete[i], StringComparison.Ordinal))
  18.             {
  19.                 ListFromWhichToRemove.RemoveAt(f);
  20.             }
  21.             else
  22.             {
  23.                 f++;
  24.             }
  25.         }
  26.     }
  27. }
  28.  
  29. /*При первом варианте (Equals и параметре StringComparison.Ordinal) удаляться будет так, на простом примере:
  30. Условие: "ля" - текст, который удаляем;
  31.  
  32. "ля" - удалится;
  33. "Ля" - не удалится;
  34. "ля-ля" - не удалится;
  35. "ля-ля-ля" - не удалится;
  36. "бе" - не удалится;
  37. "бе-бе" - не удалится;
  38. ------------------------------------------------------------------------*/
  39.  
  40. /*Удалить список из списка (все совпадения которые содержат заданный текста).*/
  41. lock (SyncObjects.ListSyncer)
  42. {
  43.     for (int i = 0; i < ListToDelete.Count; i++)
  44.     {
  45.         if (i == ListToDelete.Count || ListToDelete.Count == 0) break;
  46.  
  47.         for (int f = 0; f < ListFromWhichToRemove.Count;)
  48.         {
  49.             if (f == ListFromWhichToRemove.Count || ListFromWhichToRemove.Count == 0) break;
  50.  
  51.             if (ListFromWhichToRemove[f].Contains(ListToDelete[i]))
  52.             {
  53.                 ListFromWhichToRemove.RemoveAt(f);
  54.             }
  55.             else
  56.             {
  57.                 f++;
  58.             }
  59.         }
  60.     }
  61. }
  62. /*При втором варианте (Contains) удаляться будет так, на простом примере:
  63. Условие: "ля" - текст, который удаляем;
  64.  
  65. "ля" - удалится;
  66. "ля-ля" - удалится;
  67. "ля-ля-ля" - удалится;
  68. "бе" - не удалится;
  69. "бе-бе" - не удалится;
  70. ------------------------------------------------------------------------*/
  71.  
  72. //Для тех, кому пофиг на кодстайл и хочет упростить те два примера выше:
  73. /*Удалить список из списка (все точные совпадения).*/
  74. lock (SyncObjects.ListSyncer)
  75. {
  76.     foreach (var s in ListToDelete)
  77.     {
  78.         for (int i = 0; i < ListFromWhichToRemove.Count;)
  79.         {
  80.             if (i == ListFromWhichToRemove.Count || ListFromWhichToRemove.Count == 0) break;
  81.             if (ListFromWhichToRemove[i].Equals(s, StringComparison.Ordinal)) ListFromWhichToRemove.RemoveAt(i); else i++;
  82.         }
  83.     }
  84. }
  85.  
  86. /*Удалить список из списка (все совпадения которые содержат заданный текста).*/
  87. lock (SyncObjects.ListSyncer)
  88. {
  89.     foreach (var s in ListToDelete)
  90.     {
  91.         for (int i = 0; i < ListFromWhichToRemove.Count;)
  92.         {
  93.             if (i == ListFromWhichToRemove.Count || ListFromWhichToRemove.Count == 0) break;
  94.             if (ListFromWhichToRemove[i].Contains(s)) ListFromWhichToRemove.RemoveAt(i); else i++;
  95.         }
  96.     }
  97. }
Add Comment
Please, Sign In to add comment