В MS SQL то, что мне нужно делается так:
select sum(value1), avg(value2)
from MyTable
where not name is null
в C# (MyTable зачитывается в DataTable dtMyTable) искомые значения находятся так:
double @value1 = (from dr in dtMyTable.AsEnumerable()
where !Convert.IsDBNull(dr["name"])
select Convert.ToDouble(dr["value1"])).Sum();
double @value2 = (from dr in dtMyTable.AsEnumerable()
where !Convert.IsDBNull(dr["name"])
select Convert.ToDouble(dr["value2"])).Average();
Можно ли это как-то изящнее переписать? Мне не нравится что
from dr in dtMyTable.AsEnumerable()
where !Convert.IsDBNull(dr["name"]
повторяется (это для примера, реальное выражение может быть сложнее, условие WHERE сложнее и может быть больше функций MIN, MAX, COUNT итд, а не только две)
Спасибо