Подтвердить что ты не робот

IEnumerable <T> VS IList <T> VS IQueryable <T>

Новое для сцены MVC.net(и .net, если на то пошло), но кажется, что я нахожу широкий набор параметров, когда вы хотите заполнить "список" данными. В моем случае на данный момент я хотел бы заполнить список из выбранного запроса элементов и отобразить результаты в JSON для вывода, поэтому несите меня....

Итак, мой класс viewmodel выглядит примерно так:

[Serializable()]
public class TFSquery 
{
    public int MsgUid { get; set; }
    public DateTime CreateStamp { get; set; }    
}

И тогда я бы хотел заполнить его своим выходом:

List<TFSquery> z = (from msg in _DB.Msg 
                    select new { msg.MsgUID, msg.CreateStamp }).ToList();

Тогда я бы зациклил вывод в моем списке, чтобы затем я мог вывести его в свою возвращаемую строку Json? И когда я использую СПИСОК VS IENUMERABLE VS IQUERYABLE??

return Json(new { Result = z }, JsonRequestBehavior.AllowGet);     
4b9b3361

Ответ 1

Мои эмпирические правила:

  • Используйте список, когда вам нужно добавлять, удалять или ссылаться на элемент по индексу.

  • Используйте IQueryable, когда вам нужно запускать специальные запросы.

  • По умолчанию используйте IEnumerable.

Похоже, вы уже делаете запрос "в" своей базе данных, поэтому я бы предложил использовать простейшую версию: IEnumerable, чтобы просто иметь возможность прокручивать результаты.

Ответ 2

Если ваш новый для .NET и С# я потратил некоторое время на изучение и понимание того, что такое разные типы коллекций, как они отличаются и когда их использовать. Вы будете использовать коллекции так часто, что вы не можете позволить себе иметь "простой один лайнер", как и другие ответчики.

Вот хорошее руководство по типам коллекций .NET: http://msdn.microsoft.com/en-us/library/0ytkdh4s.aspx

IQueryable - это свой собственный зверь и заслуживает собственного гида: http://msdn.microsoft.com/en-us/library/system.linq.iqueryable.aspx

Ответ 3

Каждый интерфейс имеет свой собственный набор применений.

IQueryable предназначен для отложенных запросов (т.е. сохраняет запрос, но выполняет его только при его перечислении)

IEnumerable может быть перечислим и что он.

IList может добавлять и удалять элементы.