是否可以根据这些对象的参数对自定义类对象的列表进行子集化? (没有LINQ)

时间:2015-09-29 03:02:09

标签: c# list class subset

我想在不使用LINQ的情况下在C#中实现的是基于这些对象的一个​​参数的值来对自定义类对象的列表进行子集化。

假设我的清单声明如下:

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

此外,假设自定义类对象“MyCustom”可以返回两个参数:MyCustom.name和MyCustom.age

有没有办法可以检索并保存到临时新列表(让我们称之为“templist”)原始列表的子集(即“listofobj”)由其所有具有“年龄”的MyCustom对象形成参数大于30?谢谢!

2 个答案:

答案 0 :(得分:3)

不确定。你可以重新发明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。

答案 1 :(得分:0)

这是基于没有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一般比普通代码慢。但如果这不是您的代码中的热门路径,那么这不应该是问题。性能差异可以忽略不计。