在这种情况下哪个更有效? LINQ查询还是FOREACH循环?

时间:2014-02-03 18:39:31

标签: c# linq

在我的项目中,我实现了一个服务类,其中有一个命名为GetList()的函数,如下所示:

IList<SUB_HEAD> GetList(string u)
{
    var collection = (from s in context.DB.SUB_HEAD where (s.head_code.Equals(u))      
        select s);
    return collection.ToList();
}

也可以实现为

Arraylist unitlist= new Arraylist();
ObjectSet<SUB_HEAD> List = subheadService.GetAll();
foreach(SUB_HEAD unit in List)
{
    unitlist.Add(unit.sub_head_code);
}

这样做的目的是填充下拉菜单。

我的问题是“上述哪种方法在处理方面会更有效率?”因为我的项目有很多地方我必须使用下拉菜单。

1 个答案:

答案 0 :(得分:5)

请使用LINQ版本。如果您进行概要分析并确定它太慢(顺便说一句,它不会),您可以稍后执行优化。此外,您可以使用函数式LINQ创建一个我认为更好的单个表达式。

IList<SUB_HEAD> GetList(string u)
{
    return context.DB.SUB_HEAD.Where(s => s.head_code == u).ToList();
}

ToList()方法与您手动执行的操作完全相同。 .NET框架中的实现看起来像这样:

public static class Enumerable
{
    public static List<T> ToList<T>(this IEnumerable<T> source)
    {
        var list = new List<T>();
        foreach (var item in source)
        {
            list.Add(item);
        }
        return list;
    }
}

如果您可以使用字符“ToList()”来表达这4行代码,那么就应该这样做。代码重复很糟糕,即使这样做很简单。