0
\$\begingroup\$

Looking to see if there is a simpler way to achieve this. I would love if I could keep the return as a one-line LINQ expression. I want to grab the total number of hints used, which can be more than one.

public int hintsUsed
{
    get
    {
        int i = 0;
        questions.ForEach(q => i += q.hintsUsed);
        return i;
    }
}
\$\endgroup\$
6
\$\begingroup\$

You can use the Sum function

public int HintsUsed => questions.Sum(q => q.hintsUsed);

By using an expression bodied member (since C# 6.0), you can even get rid of the get and the return keywords plus a few braces.

The code above is equivalent to

public int HintsUsed
{
    get
    {
        return questions.Sum(q => q.hintsUsed);
    }
}

Most of the LINQ-to-Objects functionality is provided by the Enumerable Class.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Ahh perfect, thank you. Sometimes its difficult to search for these things because I'm not sure which words to use. I will definitely use this in the future. \$\endgroup\$ – Premier Bromanov May 13 '18 at 21:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.