Объект IQueryable содержит 5 объектов, но ничего не отображает, когда мы его вызываем

У меня проблема с моей службой веб-API. Я получаю список объектов Societe из базы данных, и я хочу, чтобы веб-служба возвращала данные в JSON. Для этого в моем SocieteController создан следующий метод:

// GET api/Societe
public IQueryable<societe> GetSociete()
{
 SocieteManager manager = new SocieteManager(db);
 List<societe> listeSociete = manager.getAllSociete();
 return listeSociete.AsQueryable(); 
}
</societe></societe>

Когда я вызываю URI api/Societe, я получаю 5 пустых скобок JSON. Похоже, что служба получила объекты и знает, сколько их есть, но они не могут их показать.

Когда я отлаживаю, я вижу, что listeSociete содержит 5 объектов Societe.

Любая идея, что происходит? Заранее спасибо!

1 ответ

Запросы LINQ не выполняются сразу, что обычно называется отсроченным исполнением. Попробуйте добавить метод расширения ToList() в конце последовательности:

return listeSociete.AsQueryable().ToList();

Вероятно, вы можете отказаться от AsQueryable(), поэтому строка будет AsQueryable() образом:

return listeSociete.ToList();

Кроме того, может случиться так, что вам придется возвращать IEnumerable вместо IQueryable. Все примеры, которые я видел и реализовал с помощью Web API 2, возвращают IEnumerable.

licensed under cc by-sa 3.0 with attribution.