Sea*_*son 3 .net c# linq resharper refactoring
[WebMethod(Description = "Return all activities by Task.")]
public IList<ActivityDto> GetActivitiesByTaskID(int taskID)
{
IList<Activity> activities = ActivityDao.GetByTaskID(taskID);
IList<ActivityDto> activityDtos = new List<ActivityDto>(activities.Count);
foreach(Activity activity in activities)
activityDtos.Add(ActivityDto.Create(activity));
return activityDtos;
}
Run Code Online (Sandbox Code Playgroud)
缩写为:
[WebMethod(Description = "Return all activities by Task.")]
public IList<ActivityDto> GetActivitiesByTaskID(int taskID)
{
return ActivityDao.GetByTaskID(taskID).Select(ActivityDto.Create).ToList();
}
Run Code Online (Sandbox Code Playgroud)
我觉得因为我不得不问 - 它可能做得太多了.但是,引起我担忧的唯一部分是将函数传递给Select语句.我认为我还没有充分利用这种语法,而且它实际上是一种非常简洁的表达方式.
我想知道其他程序员是否会对这种缩短版本的方法感到不安.
编辑:此外,对效率比较的评论将不胜感激.我知道LINQ因在大型数据集上工作速度慢而臭名昭着.我想说在某些情况下可以枚举10,000-20,000条记录.
Ada*_*dam 10
不,它富有表现力和简洁.
第一个版本是关于如何迭代列表并转换元素.
第二个版本是关于结果应该是什么.
创建LINQ是为了给我们提供强大,可读的工具来处理集合并对其进行转换.这正是你在第二个例子中使用它的原因.
对于不熟悉方法组语法的人,另一个选项可能是使用查询表达式:
var result = from task in ActivityDao.GetByTaskID(taskID)
select ActivityDto.Create(task);
return result.ToList(); // if you really need it as a list
Run Code Online (Sandbox Code Playgroud)