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);
Ответы
Ответ 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 может добавлять и удалять элементы.