This won't be translatable to SQL but you could do:
var query = from T in db.results
select new ResultsCustom
{
q1, q2, q3, q4
average = (new double?[] { T.q1, T.q2, T.q3, T.q4 }).Average()
};
since Average()
will ignore null values.
To get the results and do the average in Linq-to-Objects do:
var query = (from T in db.results select new {q1, q2, q3, q4}).AsEnumerable()
.Select(r => new ResultsCustom
{
r.q1, r.q2, r.q3, r.q4,
average = (new double?[] { r.q1, r.q2, r.q3, r.q4 }).Average()
}
);