Способ сделать это - вернуть объект, который не является анонимным. То есть создайте класс для хранения этих данных. Он должен иметь либо неявный конструктор с нулевым аргументом (потому что у вас нет конструкторов), либо явный конструктор с нулевым аргументом (потому что вы определили другие конструкторы). Тогда вы можете сказать:
List<MyObject> list = context.Invoices.Select(x => new MyObject()
{
InvoiceNumber = x.InvoiceNUmber,
InvoiceDate = x.InvoiceDate,
CustomerName = x.Customer.CustomerName,
TotalValue = x.InvoiceData.Sum(y => y.Quantity * y.Price),
Id = x.Id
}).ToList();
Теперь вы можете вернуть строго типизированный список объектов из вашего бизнес-уровня, и ваш уровень пользовательского интерфейса может использовать LINQ (или любой другой) для сортировки / фильтрации / подкачки страниц.