Member 13029506 Ответов: 4

Мне нужно использовать цикл for, чтобы найти строки в массиве, в которых есть одно и то же слово.#


Мне нужно найти способ использовать цикл for, чтобы найти, сколько строк, которые являются одним и тем же словом в одном и том же списке массивов. Мне нужно использовать for-loop, потому что каждый раз, когда он зацикливается и находит другое такое же слово, я хочу добавить его в переменную int :
ниже приведен код, который пытались использовать, но он не сработал:

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

foreach (string row in RoomType)
{
    if (row.Equals("Bedroom"))
    {
        bedrooms++;
    }
}

Patrice T

Покажите код, который устанавливает переменную 'RoomType', мы можем увидеть некоторый запущенный код.

[no name]

Да ... "не сработало" совсем не помогает в описании вашей проблемы.

4 Ответов

Рейтинг:
2

Graeme_Grant

Недавно был "вызов кодирования", который сделал что-то очень похожее: Задача кодирования: найти повторяющиеся элементы в коллекции элементов.[^]

От Решение 11[^] :

public static class HelperExtension
{
    public static IEnumerable<T> GetRepeats<T>(this IList<T> items)
        => items?.Intersect(
               items.Where(x => items.Where(y => Equals(x, y)).Count() > 1));
}
Это работает со списком, а не с массивом, но изменить его будет несложно. Метод расширения возьмет список слов и даст вам повторы.


Рейтинг:
2

Ralf Meier

Вы также можете попробовать :

foreach (string row in RoomType)
{
if (row.Contains("Bedroom"))
{
bedrooms++;
}
} 


Patrice T

Простое копирование кода из вопроса-это не решение.
Пожалуйста, удалите

CHill60

Чтобы быть справедливым Ральф использовал содержит а не равно

Patrice T

Ой

CHill60

:-)

Ralf Meier

Да ... потому что я понимаю, что искомая строка является частью исходной строки и не равна ей ...

Рейтинг:
1

Graeme_Grant

Вот еще одно решение с использованием Linq:

var values = new string[6] { "red", "green", "blue", "red", "red", "green" };
foreach (var item in values.GroupBy(x => x).Where(g => g.Count() > 1).Select(g => new { Value = g.Key, Count = g.Count() }))
    Debug.WriteLine($"{item.Value} x {item.Count}");


Рейтинг:
0

Patrice T

Цитата:
Мне нужно использовать for-loop, потому что каждый раз, когда он зацикливается и находит другое такое же слово, я хочу добавить его в переменную int :

Я боюсь, что вы неправильно поняли использование цикла for и что вы хотите использовать его по неправильной причине.
Вам нужен цикл for-loop, потому что вам нужно проверить каждый элемент RoomType против эталонного слова, а не потому, что вы хотите подсчитать, сколько раз вы сталкиваетесь со словом.

В принципе, я не вижу ничего плохого в вашем коде, но без кода вокруг трудно действительно сказать.
Полный код с образцом того, что находится внутри Roomtype.