Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 769311
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T18:18:56+00:00 2026-05-14T18:18:56+00:00

I was wondering how could I improve the performance of the following code: public

  • 0

I was wondering how could I improve the performance of the following code:

public class MyObject
{
    public int Year { get; set; }
}

//In my case I have 30000
IEnumerable<MyObject> data = MethodThatReturnsManyMyObjects(); 

var groupedByYear = data.GroupBy(x => x.Year); 

//Here is the where it takes around 5 seconds
foreach (var group in groupedByYear) 
    //do something here.

The idea is to get a set of objects with unique year values. In my scenario there are only 6 years included in the 30000 items in the list so the foreach loop will be executed 6 times only. So we have many items needing to be grouped in a few groups.

Using the .Distinct() with an explicit IEqualityComparer would be an alternative but somehow I feel that it wont make any difference.

I can understand if 30000 items is too much and that i should be happy with the 5 seconds I get, but I was wondering if the above can be imporved performance wise.

Thanks.

EDIT:
The answers below made me dig a bit deeper only to realize that the 5 seconds I am getting only heppens when the data are loaded into memory from the DB. The delay was disguised inside the foreach loop as the deferred execution of the IEnumerable delayed it until that point confusing me to assume that probably the GroupBy() could be refactored to something more performant.

The question still stands though, is the GroupBy() command the optimal way to achieve the best performance in such cases?

  • 1 1 Answer
  • 2 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T18:18:57+00:00Added an answer on May 14, 2026 at 6:18 pm

    That definitely shouldn’t take that long. Is this running under the debugger, or not? Are any exceptions being thrown? Does the Year property perform any calculations in real life? It should execute this almost instantly, to be honest.

    Do you have a short but complete program which demonstrates it taking a long time? (If not, I’ll try to come up with one myself to get some sample timings.)

    Note that if MethodThatReturnsManyMyObjects is using deferred execution for the iterator, that could be the culprit – how long does it take if you call data.ToList() for example?

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

was wondering if anyone could help me improve my code. Its just some basic
Hi sorry still learning here and slow to learning code arguments. Just wondering could
I was wondering how could I reload any website using javascript and set it
Noob wondering how to improve his code. a, b, c = string.split(enteredDate, /) m31s
I have written a simple log4net wrapper. I was wondering whether this wrapper code
i am wondering could i access my app internal storage using emulator. I mean
i was wondering how could i emulate a mouse click with c# with kinect.
I'm wondering what could be some consequences of reusing the names of built-in types
I was wondering which could be a better way of mounting different apps for
I was wondering what could be the point in trying to delete committed changelists,

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.