@Vinegret

Как выбрать процент элементов из List C# с помощью Linq?

Напишите свой метод расширения с названием "Top" для коллекции IEnumerable, принимающий значение Х от 1 до 100 и возвращающий заданное количество процентов от выборки с округлением количества элементов в большую сторону. То есть для списка var list = new List{1,2,3,4,5,6,7,8,9}; list.Top(30) должно вернуть 30% элементов от выборки по убыванию значений, то есть [9,8,7] (33%), а не [9,8] (22%).
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
@Voland69
using System;
using System.Linq;
using System.Collections.Generic;
					
public class Program
{
	public static void Main()
	{
		var list = new List<int> {1,2,3,4,5,6,7,8,9};
		list.Top(30).ToList().ForEach(x => Console.WriteLine(x));
	}
}

public static class IEnumerableExt
{
	public static IEnumerable<T> Top<T>(this IEnumerable<T> list, double percent)
	{
		var elementCount = (int)Math.Ceiling((double)list.Count() * percent / 100);
		return list.OrderByDescending(x => x).Take(elementCount);
	}
}


пример на фиддле
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Adler_lug
@Adler_lug
Думаю смотреть стоит в сторону Take()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы