Здравствуйте!
Подскажите пожалуйста, как переписать функцию GetValues()
с помощью LINQ.
И если дадите дельную ссылку на изучение LINQ(кроме MSDN), буду благодарен.
Вот код:
enum MyEnum { FIRST, SECOND };
class MyClass
{
List<MyObject> MyList = new List<MyObject>();
//constructor
internal MyClass()
{
MyList.Add(new MyObject(MyEnum.FIRST, 1));
MyList.Add(new MyObject(MyEnum.FIRST, 2));
MyList.Add(new MyObject(MyEnum.FIRST, 3));
MyList.Add(new MyObject(MyEnum.SECOND, 1));
List<int> collectedValues = GetValues(MyList, MyEnum.SECOND);
}
List<int> GetValues(List<MyObject> MyList, MyEnum ExceptionEnum)
{
List<int> returnList = new List<int>();
for(int i = 0; i < MyList.Count; i++)
{
if(MyList[i].MyName == ExceptionEnum)
continue;
returnList.Add(MyList[i].Value);
}
return returnList;
}
}
class MyObject
{
internal MyEnum MyName;
internal int Value;
public MyObject(MyEnum MyName, int Value)
{
this.MyName = MyName;
this.Value = Value;
}
}
Что-то вроде:
List<int> GetValues(List<MyObject> MyList, MyEnum ExceptionEnum)
{
return MyList.Where(i => i.MyName != ExceptionEnum).Select(i => i.Value).ToList();
}
Ваш код:
if(MyList[i].MyName == ExceptionEnum)
continue;
returnList.Add(MyList[i].Value);
Будет равен:
if(MyList[i].MyName != ExceptionEnum)
returnList.Add(MyList[i].Value);
И отсюда следует, что нам надо взять все элементы из MyList
, где MyListItem.MyName != ExceptionEnum
. Тут нам приходит на помощь Where-clause
. Далее проходим и вытягиваем Value
из каждого элемента с помощью Select-clause
. И в конце просто конвертим IEnumerable
в List
с помощью ToList()
.
Насчет изучения LINQ, то посоветую сайт товарища Метанита.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Вопрос как передать в класс Task или Task функцию с параметром, интересуют все способыСпасибо
Не могe решить проблему с подсчетом размера коллекцииЕсть таблица на сайте с фильтрами, там выводиться 10 записей
Имеется плагин, который парсит записи с сайта-партнёра, и сохраняет эти записи в новом произвольном типе, допустим custom_type
Привет ребят, хочу попросить более опытных колег посмотреть и высказать критику кода, что бы я мог узнать больше и исправитьсяВот моё приложение