是否有可能基于这些对象的参数自定义类对象的子集列表?(没有LINQ)

本文关键字:对象 列表 没有 子集 LINQ 自定义 有可能 于这些 参数 是否 | 更新日期: 2023-09-27 18:14:53

我想在c#中不使用LINQ实现的是基于这些对象的一个参数的值来创建自定义类对象列表的子集。

假设列表的声明如下:

List<MyCustom> listofobj = new List<MyCustom>();

同样,假设自定义类对象"MyCustom"可以返回两个参数:MyCustom.name和MyCustom.age

是否有一种方法,通过它我可以检索和保存到一个临时的新列表(让我们称之为"templist")的原始列表的子集(即。"listofobj")形成的所有MyCustom对象有"年龄"参数大于30?谢谢!

是否有可能基于这些对象的参数自定义类对象的子集列表?(没有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。

这就是如何在没有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比普通代码慢。但这应该不是问题,如果这不是热路径在您的代码。性能差异可以忽略不计。