Возможно ли поднабор списка объектов пользовательских классов на основе параметра этих объектов? (без LINQ)
То, что я пытаюсь достичь в C# без использования LINQ, - это создать подмножество списка объектов пользовательского класса на основе значения одного из параметров этих объектов.
Допустим, объявление моего списка выглядит следующим образом:
List<MyCustom> listofobj = new List<MyCustom>();
Также предположим, что объект пользовательского класса "MyCustom" может возвращать два параметра: MyCustom.name и MyCustom.age.
Есть ли способ, с помощью которого я могу извлечь и сохранить во временный новый список (назовем его "templist") подмножество исходного списка (то есть "listofobj"), сформированный всеми его объектами MyCustom, у которых параметр "age" больше чем 30? Спасибо!
2 ответа
Таким образом вы получаете подмножество исходного списка на основе параметров без linq.
List<MyCustom> listofobj = new List<MyCustom>();
List<MyCustom> templist = new List<MyCustom>();
foreach(var obj in listofobj)
{
if(obj.Age > 30)
{
templist.Add(obj);
}
}
Вы также можете использовать этот Linq.
templist = listofobj.Where(obj => obj.Age > 30).ToList();
Linq медленнее, чем обычный код в целом. но это не должно быть проблемой, если это не горячий путь в вашем коде. разница в производительности незначительна.
Конечно. Вы можете заново изобрести LINQ:
IEnumerable<MyCustom> WhereByAge(IEnumerable<MyCustom> source, int age)
{
foreach (MyCustom myCustom in source)
{
if (myCustom.Age > age)
{
yield return myCustom;
}
}
}
затем:
List<MyCustom> filteredList = new List(WhereByAge(listofobj, 30));
Но почему? Я настоятельно рекомендую, если вы хотите LINQ-подобное поведение, просто используйте LINQ.