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;
}
}
1 Answer 1
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.
-
\$\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– Premier Bromanov2018年05月13日 21:15:04 +00:00Commented May 13, 2018 at 21:15