我想在不使用LINQ的情况下在C#中实现的是基于这些对象的一个参数的值来对自定义类对象的列表进行子集化。
假设我的清单声明如下:
List<MyCustom> listofobj = new List<MyCustom>();
此外,假设自定义类对象“MyCustom”可以返回两个参数:MyCustom.name和MyCustom.age
有没有办法可以检索并保存到临时新列表(让我们称之为“templist”)原始列表的子集(即“listofobj”)由其所有具有“年龄”的MyCustom对象形成参数大于30?谢谢!
答案 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一般比普通代码慢。但如果这不是您的代码中的热门路径,那么这不应该是问题。性能差异可以忽略不计。