简体   繁体   中英

Which is more efficient in this case? LINQ Query or FOREACH loop?

In my project, I implemented a service class which has a function naming GetList() which is as follows:

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();
}

which can also be implemented as

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

Purpose of doing this is to populate dropdown menu.

My question is that "which of the above method will be more efficient with respect to processing?" because my project have lot of places where i have to use drop down menu.

Please, just use the LINQ version. You can perform optimizations later if you profile and determine this is too slow (by the way, it won't be). Also, you can use the functional-style LINQ to make a single expression that I think reads better.

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

The ToList() method is going to do exactly the same thing as you're doing manually. The implementation in the .NET framework looks something like this:

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;
    }
}

If you can express these 4 lines of code with the characters " ToList() " then you should do so . Code duplication is bad, even when it's for something this simple.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM