public HashSet<Student> GetStudents(int studentId)
{
IEnumerable<Student> studentTypes = this.studentTypes .Where(x => (x.studentID== studentId));
if (studentTypes .FirstOrDefault() != null)
{
//return new HashSet<Student>(studentTypes);
return studentTypes.ToHashSet();
}
else
{
return new HashSet<Student>();
}
}
public static class LinqUtilities
{
public static HashSet<T> ToHashSet<T>(this IEnumerable<T> enumerable)
{
HashSet<T> hashSet = new HashSet<T>();
foreach (var en in enumerable)
{
hashSet.Add(en);
}
return hashSet;
}
}
この関数は 1000 回など何度も呼び出され、結果セットには 5000 人の生徒が含まれます。この関数を最適化するにはどうすればよいですか ... からIEnumerable
への変換HashSet
が多くのオーバーヘッドを引き起こしていることはわかっています。
ToHashSet
私の拡張方法です。この機能は、ゆっくりと多くの時間を食べることです。