Member 13873270 Ответов: 2

Как я могу рассчитывать элементы ListBox по имени в этом списке, или иной этикетки.текст?


У меня есть текстовое поле, куда я пишу имена. Эти имена добавляются в список путем проверки. Если имена дублируются (Адам,Адам), то мне нужен этот результат Adam (2) в том же списке. Маркус, Маркус Маркус: Маркус (3) в тот же список.
Могу ли я решить проблему с помощью listbox или мне нужно использовать DataGridView?

Что я уже пробовал:

текстовое поле textbox1.Текст = Конвертировать.Метод toString(lb_beolvasott.Предметы.Рассчитывать);

CHill60

Что не так с кодом, который вы написали? Почему за Адамом следует 2, а за Марком-5? Отредактируйте свой пост, чтобы прояснить вашу проблему

Member 13873270

У меня есть текстовое поле, куда я пишу имена. Эти имена добавляются в список путем проверки. Если имена дублируются (Адам,Адам), то мне нужен этот результат Адам (2). Маркус, Маркус Маркус: Маркус (3)

2 Ответов

Рейтинг:
1

OriginalGriff

Попробуйте что-нибудь вроде этого:

string[] dataFromTextBox = { "Adam", "Marcus", "Marcus", "Adam", "Marcus", "Maria", "Marcus", "Marcus" };
string[] dataWithCounts = dataFromTextBox.GroupBy(d => d)
                                         .Select(g =>$"{g.Key}({g.Count()})")
                                         .ToArray();


Рейтинг:
0

Maciej Los

Я не уверен, что хорошо вас понимаю, но... взгляните на приведенный ниже пример:

List<string> items = new List<string>()
	{
		"Alexis", "Marcus", "Maria",
		"Marcus", "Adam", "Alexis",
		"Marcus", "John", "Adam",
		"Fred", "Marcus", "Robert",
		"Marcus", "Adam", "Fred",
		"Maria", "Eduardo", "Eve"
	};
	
List<string> grouped = items
	.GroupBy(x=>x)
	.Select(grp=>$"{grp.Key}({grp.Count()})")
	.ToList();
	
foreach(string s in grouped)
	Console.WriteLine(s);


Результат:
Alexis(2)
Marcus(5)
Maria(2)
Adam(3)
John(1)
Fred(2)
Robert(1)
Eduardo(1)
Eve(1)