Я не думаю, что анонимные типы предназначены для использования так, как вы хотите (компилятор создает анонимный тип на основе результата присваивания).Почему бы вам просто не объявить тип Tuple и не использовать его.
Edit:
IEnumerable<Tuple<int, string, string, DateTime>> FolderEmails =
default( IEnumerable<Tuple<int,string,string,DateTime>> );
if (folder == "Unprocessed")
{
FolderEmails = from emails in EmailManagerDAL.Context.Emails
join activities in EmailManagerDAL.Context.EmailActivities on emails.ID equals activities.EmailID
where activities.EmailID != null
select new Tuple<int, string, string, DateTime>
(
emails.ID,
emails.MessageFrom,
emails.MessageSubject,
emails.MessageDeliveryTime
);
}
else // Processed
{
}
Вам нужно изменить «select new {field = value}», потому что он больше не являетсяСоздается анонимный тип, это локально объявленный явный тип:
Tuple<int,string,string,DateTime>
, которые являются типами неизменяемых значений, поэтому вам придется вызывать конструктор для их создания (выбрать новый кортеж (значения)).