It looks right, I would do it in a different way.
* Theres no need to use the ref keyword, its a reference type already.
* I would return the filtered list. That way i would end up with the original list and the new one.
* Theres no need to return the list count. Returning the filtered list, haven both lists you can compare and do more stuf.
* Your predicate could have just one test.
So, with my changes, I end up with this:
public VList<View_EmployeeSkill> IterateFind(VList<View_EmployeeSkill> list, View_EmployeeSkillColumn column, string value)
{
if (column.Equals(View_EmployeeSkillColumn.SkillLevel))
{
int number = -1;
int.TryParse(value, out number);
return list.FindAll(delegate(View_EmployeeSkill vES) { return vES.SkillLevel >= number; });
}
else
{
return list.FindAll(column, value);
//searchQuery.Append(column, value);
}
}
If you want do more stuff within the method with the result list just declare the variable and do your thing.
Hope this helps.