C # Linq Проецирование анонимного типа на интерфейс

Можно ли проецировать с помощью Select на анонимный тип?

Вот пример кода

public interface ITest
{
    string A{get;}
    int B{get;}
}

string[] names = { "Tom", "Dick", "Harry", "Mary", "Jay" };
IQueryable<ITest> query =
    from     n in names.AsQueryable()
    select   new {A = n.ToUpper(), B = 2012};

Приведенный выше код вызывает

Невозможно неявно преобразовать тип 'System.Linq.IQueryable' на 'System.Linq.IQueryable'

Примечание: я могу заставить приведенный выше код работать, если я определю класс Test, который реализует ITest, а затем проецирую его в этот класс, используя:

select   new Test {A = n.ToUpper(), B = 2012};

Почему? Я пытаюсь чтобы увидеть, могу ли я определить только интерфейс, и мне не нужно определять конкретную реализацию объекта, и пусть Linq создаст мне объект.

8
задан p.campbell 12 November 2011 в 15:34
поделиться