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可以添加和删除项目。