IEnumerable VS IList VS IQueryable
MVC.net场景的新手(以及.net),但是当我想要用数据填充“列表”时,我似乎找到了各种各样的选项。 在我的情况下,我想从一个选择的项目查询填充一个列表,并用JSON渲染结果输出,所以请耐心等待….
所以,我的viewmodel类是这样的:
[Serializable()] public class TFSquery { public int MsgUid { get; set; } public DateTime CreateStamp { get; set; } }
然后我想用我的查询输出填充它:
List z = (from msg in _DB.Msg select new { msg.MsgUID, msg.CreateStamp }).ToList();
那么我会将输出循环到我的List中,以便我可以在我的Json返回字符串中输出吗? 当我使用LIST VS IENUMERABLE VS IQUERYABLE ?
return Json(new { Result = z }, JsonRequestBehavior.AllowGet);
我的经验法则:
-
必须按索引添加,删除或引用项目时使用列表。
-
必须针对它运行即席查询时,请使用
IQueryable
。 -
默认情况下使用
IEnumerable
。
看起来你已经在你的数据库中“查询”,所以我建议使用最简单的版本: IEnumerable
只是能够遍历结果。
如果您是.NET和C#的新手,我会花一些时间研究并了解不同的集合类型是什么,它们之间的区别以及何时使用它们。 你会经常使用collections品,你不能像其他回答者那样有一个“简单的单行”概要理解。
以下是.NET集合类型的一个很好的指南: http : //msdn.microsoft.com/en-us/library/0ytkdh4s.aspx
IQueryable是它自己的特殊野兽,值得拥有自己的指南: http : //msdn.microsoft.com/en-us/library/system.linq.iqueryable.aspx
每个接口都有自己的一组用途。
IQueryable用于延迟查询(即,它保存查询但仅在枚举时执行)
IEnumerable可以枚举,就是这样。
IList可以添加和删除项目。