Невозможно сериализовать параметр типа «System.Linq.Enumerable…» при использовании WCF, LINQ, JSON.

У меня есть служба WCF. Он использует Linq-to-objects для выбора из словаря. Тип объекта прост:

public class User 
{
   public Guid Id;
   public String Name;
}

Существует коллекция хранится вDictionary<Guid,User>.

Я хочу иметь WCFOperationContract метод как это:

public IEnumerable<Guid> GetAllUsers()
{
    var selection = from user in list.Values
        select user.Id;
     return selection;
}

Он компилируется нормально, но когда я запускаю его, я получаю:

Сервер обнаружил ошибку при обработке запроса. Сообщение об исключении: «Невозможно сериализовать параметр типа» System.Linq.Enumerable + WhereSelectEnumerableIterator2[Cheeso.Samples.Webservices._2010.Jan.User,System.Guid]' (for operation 'GetAllUsers', contract 'IJsonService') because it is not the exact type 'System.Collections.Generic.IEnumerable1 [System.Guid] 'в сигнатуре метода и отсутствует в коллекции известных типов. Чтобы сериализовать параметр, добавьте тип в коллекцию известных типов для операции, используя ServiceKnownTypeAttribute. '. Смотрите журналы сервера для более подробной информации.

Как я могу заставить выбор бытьIEnumerable<Guid> ?

РЕДАКТИРОВАТЬ
Если я изменю код, чтобы сделать это, он работает хорошо - хорошая совместимость.

public List<Guid> GetAllUsers()
{
    var selection = from user in list.Values
        select user.Id;
     return new List<Guid>(selection);
}

Есть ли способ для меня, чтобы избежать создания / созданияList<T> ?

Ответы на вопрос(3)

Ваш ответ на вопрос