× Search
Tuesday, August 21, 2018


We write about a lot of things here related to our business outlook as well as about some of the things we do like coding, project planning or designing. Our focus is on our clients and with other developers who we share techniques and concepts with.  We really hope your enjoy our Blogs and get some sort of benefit from our musings.


As a Side note, this Blog Page was created using the EasyDNNNews Module. The Category Selector and the Calendar are part of this package. For the Brucnhure and Basic DNN packages you can have this module for a slight onetime fee. For the Professional and greater DNN packages the EasyDNNNews module along with all of the other EasyDNN modules are included in the price.

Ibrahim Malluf

Using Linq to sort a list on the sum of multiple fields

Not rocket science, but I had to put in my 2 cents on this StackOverflow question.

A programmer on Stack Overflow ask a question about sorting a list based upon the sum of multiple fields. Someone else answered the question before I could and gave the simplest approach and a very good answer. But I wanted to get my answer in too, so I posted this response to Stack Overflow.
First the Question:

I have another LINQ calculation question.
I have a list made of class items:
List<StudyAreasClass> Production = new List<StudyAreasClass>();
Production.Add(new StudyAreasClass() { Plant = "Plant A", Value1 = 94.4, Value2 = 97.2, Value3 = 71.9, Value4 = 12.8 });
Production.Add(new StudyAreasClass() { Plant = "Plant B", Value1 = 84.1, Value2 = 95.2, Value3 = 64.8, Value4 = 92.5 });
Production.Add(new StudyAreasClass() { Plant = "Plant C", Value1 = 43.1, Value2 = 66.3, Value3 = 92.7, Value4 = 84.0 });
Production.Add(new StudyAreasClass() { Plant = "Plant D", Value1 = 72.6, Value2 = 51.2, Value3 = 87.9, Value4 = 68.1 });
I would like to reorder that list but based on the sum of Value1,2,3 or Value1,2,3,4 for each entry in the list.
So I would like to keep the list in its current form with all the separate values so I can iterate through it, however I would like it to be in the calculated order.
How could I achieve this?
Well Amy, another poster gave this answer:
List<ProductionClass> orderedProduction = Production
.OrderBy(saClass => saClass.Value1 + saClass.Value2 + saClass.Value3 + saClass.Value4)
That's actually a good answer and the story could end here happily!
But for me, the story didn't end here. To be fair, I did not see Amy's answer until after I posted mine. My take on it had a view a little bit wider than the specific request. My thoughts where that if the Sums of the values of the underlying class where used here to sort the list, might this sum of values have use elsewhere as well? My response was to wrap the sum of values in an extension class that added this functionality without modifying the underlying model. Here is the code I posted:
namespace ConsoleApp1
    /// <summary>
    /// A class that adds an extension to the underlying StudyAreasClass
    /// that provides the required summary of values.
    /// </summary>
    public static class GetSum
        public static double SumOfValues(this StudyAreasClass item)
            return item.Value1 + item.Value2 + item.Value3 + item.Value4;
    public class StudyAreasClass
        public string Plant { getset; }
        public double Value1 { getset; }
        public double Value2 { getset; }
        public double Value3 { getset; }
        public double Value4 { getset; }
    class Program
        static void Main(string[] args)
            List<StudyAreasClass> Production = new List<StudyAreasClass>();
            Production.Add(new StudyAreasClass() { Plant = "Plant A", Value1 = 94.4, Value2 = 97.2, Value3 = 71.9, Value4 = 12.8 });
            Production.Add(new StudyAreasClass() { Plant = "Plant B", Value1 = 84.1, Value2 = 95.2, Value3 = 64.8, Value4 = 92.5 });
            Production.Add(new StudyAreasClass() { Plant = "Plant C", Value1 = 43.1, Value2 = 66.3, Value3 = 92.7, Value4 = 84.0 });
            Production.Add(new StudyAreasClass() { Plant = "Plant D", Value1 = 72.6, Value2 = 51.2, Value3 = 87.9, Value4 = 68.1 });
            List<StudyAreasClass> orderedProduction = Production.OrderBy(row => row.SumOfValues()).ToList<StudyAreasClass>();
            foreach(StudyAreasClass item in orderedProduction)
                Console.WriteLine($" {item.Plant} {item.SumOfValues()}");
In the end, I really wanted to show that when considering a solution to a particular problem, we should also consider how this solution could affect other code and try to derive the most benefit as much as possible. 
Previous Article MCSI Updates web site to Dot Net Nuke 9.2
Next Article When DataTable Parameters really come in handy
41 Rate this article:
No rating

Leave a comment

Add comment

«August 2018»

When DataTable Parameters really come in handy

This is a another Stack Overflow question I answered for someone concerning the best way to handle processing data changes in a C# client connecting to a SQL-Server data store.

The question was like this:

I am trying to optimize Quartz .NET scheduler by eliminating the foreach iteration through each jobs.

Read more


ASP.NET MVC - Problems with Separation of Concerns

Often in ASP.NET MVC, the term ViewModel is confused with the ViewModel of the MVVM pattern. This problem surfaced itself with this programmer's very astute question about the seperation of concerns when trying to design an application solution. This person found the role of the ViewModel in ASP.NET MVC confusing and problematic.  

I try to clarify this matter by showing that the ViewModel used in the ASP.NET MVC Pattern is not the same thing as the ViewModel in the MVVM pattern. they just happen to share the same title.

Read on, and be sure to offer your comments on the subject.

Read more
Terms Of UsePrivacy StatementCopyright 2018 by Malluf Consulting Services Inc
Back To Top