For Loop 性能更好同样是编码标准
var totalCount = new List<int>();
- FOREACH
醇>
foreach(var student in StudentList)
{
var studentItem= student.DataContext as studentEntity;
if (studentItem!= null)
{
totalCount.Add(studentItem.Id);
}
}
- 的ForEach
醇>
StudentList?.ForEach(student=>
{
var studentItem= student.DataContext as studentEntity;
if (studentItem!= null)
{
totalCount.Add(studentItem.Id);
}
});
我的问题是快速性能哪个循环更正确。
如果我的StudentList
中有1000
及以上的记录,我想要
在c#中执行逻辑操作然后ForLoop更好
快速性能
提前谢谢!!!
答案 0 :(得分:3)
让.Net为你做,摆脱任何循环:
https://msdn.microsoft.com/en-us/library/z883w3dc(v=vs.110).aspx
totalCount.AddRange(studentList);
它更具有可读性和(可能)更高效。
修改:如果totalCount
和studentList
不同类型,请添加Select
,例如:
totalCount.AddRange(studentList.Select(student => student.Id));
答案 1 :(得分:0)
在优化方面它们几乎相同,你可以查看Eric Lippert's blog: “foreach” vs “ForEach”,在那里他谈到这一点,并在内部显示forEach。
public static void ForEach<T>(this IEnumerable<T> sequence, Action<T> action)
{
// argument null checking omitted
foreach(T item in sequence) action(item);
}
答案 2 :(得分:0)
另一种用于从另一个列表创建列表的.NET(LINQ)方法(一个班轮粉丝的单行)
var totalCount = studentList.ToList();
另一种LINQ方法,当你已经存在项目时。
var totalCount = new List<int> { 1, 2 ,3 };
var all = totalCount.Concat(studentList).ToList();
不可能不坚持榜样,因为只有当你知道问题的背景时才能实现性能。
在您更新的示例中,可读性和足够快的方法可能是
var totalCount =
StudentList.Select(student => student.DataContext as Entity)
.Where(entity => entity != null)
.Select(entity => entity.Id)
.ToList();