Как найти элементы с заданным условием C# LINQ

191
17 декабря 2021, 19:00

Есть массив элементов типа int, например {-50, 2, 55, 985, 98515, -5354}

Помогите, пожалуйста, сообразить, как при помощи LINQ перебрать все эти элементы и добавить в новый массив только те, которые содержат две цифры 5. В массив должны поместиться след. элементы: { 55, 98515, -5354}.

foreach (var n in oldArray.Where(x => x.ToString().Contains('5'))) // этот кусок кода выводит только те элементы, в которых хотя бы раз содержалась пятерка. Помогите доработать

Answer 1
int numOf5(int number){
    number = Math.Abs(number);
    int ret = 0;
    while(number > 0){
        int rest = number%10;
        if (rest == 5) ret++;
        number = number / 10;       
    }
    return ret;
}

....

var array = new[] { -50, 2, 55, 985, 98515, -5354 };
foreach (var item in array.Where(x => numOf5(x) >= 2))
    Console.WriteLine(item);    

....

55
98515
-5354

UPD

var array = new[] { -50, 2, 55, 985, 98515, -5354 };
foreach (var item in array.Where(x => x.ToString().Count(c=>c == '5') >= 2))
    Console.WriteLine(item);    
READ ALSO
WPW Prism & DryIoC constructor injection, есть ли?

WPW Prism & DryIoC constructor injection, есть ли?

Доброго времени сутокСтолкнулся с проблемой

78
Расжать PDF-файл

Расжать PDF-файл

Требуется расжать ПДФ, а именно: ПДФ хранится обычно в сжатом виде, типа:

108
проблема с IntelliSence VisualStudio 2019

проблема с IntelliSence VisualStudio 2019

В vs 2017 и до него Intellisense работал просто отличноЯ набирал текст, не важно с большой буквы, с ошибкой - visual studio сам выбирал вариант, подсвечивал...

95
Регулярное выражение для Regex

Регулярное выражение для Regex

Как прописать регулярное выражения для Regex , чтобы в строке найти два одинаковых слова(не более)?

92