【发布时间】:2012-06-28 05:09:15
【问题描述】:
我在使用此 LINQ 查询时遇到性能问题。 数据已加载到 this.students 中。 现在,当我调用 GetStudentData 函数说 1000 次时,它会产生巨大的开销。 有没有办法在不将 LINQ 更改为循环的情况下改进这一点
public Student GetStudentData()
{
IEnumerable<Students> studentTypes = this.students.Where(x => (x.studentsId == studentId && x.StduentType.Equals(studentType)));
if(studentTypes.Count==0) return new Student() { studentid=studentID};
return (Student)studentTypes.First();
}
所以这里是使用我的原始版本循环 10000 次时的结果
原始版本:平均 5.6 秒
带有FirstOrDefault 的新版本@des 代码:3.6 秒
【问题讨论】:
-
你真的在运行这 1000 个吗?否则,这篇文章非常合适:hanselman.com/blog/…
-
ew,顺便说一句,如果没有找到符合条件的学生,我真的不喜欢你如何返回新学生 - 非常混乱。
-
是的,我正在运行 1000 次
-
IEnumerable<Students>是错字吗?应该是IEnumerable<Student>? -
是的,一定是错字。抱歉
标签: c# performance linq