Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Работа с List Добавлено: 12.11.08 19:53  

Автор вопроса:  ygen | Web-сайт: soft.ygen.ru/
Чёт-совсем туплю,помогите решить проблемку. Примерно понимаю, что

В list есть строчки:
new1--hello:world
asdqwe--dasd:eqwdq
asdasd--das:dqwe
qwetfd--dasqwe:eqwdsa
new1--123:321
asdasd--da454s:res

Надо сформировать другой list,с объединёнными данными типа:

new1--hello:world,123:321
asdqwe--dasd:eqwdq
asdasd--das:dqwe,da454s:res
qwetfd--dasqwe:eqwdsa

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 12.11.08 23:59
И в чем проблема? Два цикла. Можно даже один.

Ответить

Номер ответа: 2
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #2
Добавлено: 13.11.08 15:39
пример привел - жесть)

Ответить

Номер ответа: 3
Автор ответа:
 ygen



Вопросов: 36
Ответов: 87
 Web-сайт: soft.ygen.ru/
 Профиль | | #3
Добавлено: 13.11.08 18:11
:) просто не могли бы привести код, т.к. чёто не получается у меня никак... как это получше сделать?

Ответить

Номер ответа: 4
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #4
Добавлено: 13.11.08 21:20
Два цикла. Можно даже один.

А один то как? У меня что то меньше двух не получается :\

Ответить

Номер ответа: 5
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #5 Добавлено: 14.11.08 15:06
Можно один

Ответить

Номер ответа: 6
Автор ответа:
 ygen



Вопросов: 36
Ответов: 87
 Web-сайт: soft.ygen.ru/
 Профиль | | #6
Добавлено: 14.11.08 16:05
Каким образом можно один? Приведите пример кода?

Ответить

Номер ответа: 7
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 14.11.08 17:12
А можно вообще без циклов в исходном коде (Min и 42 это, как можно догадаться, особая уличная магия):

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace without_cycles_cs
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             string[] arg = {
  13.                 "new1--hello:world",
  14.                 "asdqwe--dasd:eqwdq",
  15.                 "asdasd--das:dqwe",
  16.                 "qwetfd--dasqwe:eqwdsa",
  17.                 "new1--123:321",
  18.                 "asdasd--da454s:res"
  19.             };
  20.  
  21.             Dictionary<string, List<string>> m = new Dictionary<string,List<string>>();
  22.  
  23.             arg
  24.                 .Select(x => x.Split(new string[] {"--"}, StringSplitOptions.None))
  25.                 .Min(
  26.                 x =>
  27.                 {
  28.                     if (m.ContainsKey(x[0])) m[x[0]].Add(x[1]);
  29.                     else m.Add(x[0], new List<string>() { x[1] });
  30.                     return 42;
  31.                 }
  32.             );
  33.  
  34.             m.Min(x => {
  35.                 Console.WriteLine(x.Key + "--" + String.Join(",", x.Value.ToArray()));
  36.                 return 42;
  37.             });
  38.         }
  39.     }
  40. }

Ответить

Номер ответа: 8
Автор ответа:
 ygen



Вопросов: 36
Ответов: 87
 Web-сайт: soft.ygen.ru/
 Профиль | | #8
Добавлено: 14.11.08 17:20
хм...а на VB?

Ответить

Номер ответа: 9
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #9
Добавлено: 14.11.08 20:24
Каким образом можно один? Приведите пример кода?

Действительно. Каким образом?
Лично у меня (vb6) один цикл для обработки и один для выгрузки во второй LB, а как обойтись только одним циклом - хз :)

Ответить

Номер ответа: 10
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #10
Добавлено: 15.11.08 00:51
Как вариант - заюзать коллекцию, где хранить идентификатор строки и ее номер во втором листе. И в том же цикле просто обновлять данные в строке второго листа.

Ответить

Номер ответа: 11
Автор ответа:
 ygen



Вопросов: 36
Ответов: 87
 Web-сайт: soft.ygen.ru/
 Профиль | | #11
Добавлено: 16.11.08 12:55
Серёга, вы не могли бы привести ваш код?

Ответить

Номер ответа: 12
Автор ответа:
 ygen



Вопросов: 36
Ответов: 87
 Web-сайт: soft.ygen.ru/
 Профиль | | #12
Добавлено: 17.11.08 20:56
Серёга, приведите пожалуйста ваш код.

Ответить

Номер ответа: 13
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #13
Добавлено: 18.11.08 22:35
  1. Private Sub Command2_Click()
  2. Dim s   As String, _
  3.     a() As String, _
  4.     d   As String, _
  5.     i   As Long, _
  6.     j   As Long, _
  7.     jj  As Long
  8. d = "--"
  9. For i = 0 To List1.ListCount - 1
  10.     a = Split(List1.List(i), d)
  11.     j = InStr(1, s, a(0) + d)
  12.     If j = 0 Then
  13.         s = s + List1.List(i) + vbCrLf
  14.     Else
  15.         jj = InStr(j, s, vbCrLf)
  16.         s = Mid(s, 1, jj - 1) + "," + a(1) + Mid(s, jj)
  17.     End If
  18. Next i
  19. s = Mid(s, 1, Len(s) - 2)
  20. a = Split(s, vbCrLf)
  21. List2.Clear
  22. For i = 0 To UBound(a)
  23.     List2.AddItem a(i)
  24. Next i
  25. End Sub

Ответить

Номер ответа: 14
Автор ответа:
 ygen



Вопросов: 36
Ответов: 87
 Web-сайт: soft.ygen.ru/
 Профиль | | #14
Добавлено: 20.11.08 19:55
Серёга!!! Спасибо!!!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам