IEnumerable <t> VS IList <t> VS IQueryable <t> </t> </t> </t>

时间:2010-08-30 19:26:54

标签: c# .net asp.net-mvc json

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();

那么我会将输出循环到我的List中,以便我可以在我的Json返回字符串中输出吗?当我使用 LIST VS IENUMERABLE VS IQUERYABLE ??

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

3 个答案:

答案 0 :(得分:33)

我的经验法则:

  • 当您必须按索引添加,删除或引用某个项目时,请使用列表。

  • 当您必须针对它运行即席查询时,请使用IQueryable

  • 默认使用IEnumerable

看起来您已经在“数据库”中进行了查询,因此我建议使用最简单的版本:IEnumerable,以便能够遍历搜索结果。

答案 1 :(得分:10)

如果您是.NET和C#的新手,我会花一些时间研究并了解不同的集合类型是什么,它们之间的区别以及何时使用它们。你经常使用收藏品,你不能像其他回答者那样有一个“简单的单行”概要理解。

以下是.NET集合类型的一个很好的指南: http://msdn.microsoft.com/en-us/library/0ytkdh4s.aspx

IQueryable是它自己的特殊野兽,值得拥有自己的指南: http://msdn.microsoft.com/en-us/library/system.linq.iqueryable.aspx

答案 2 :(得分:3)

每个界面都有自己的一组用途。

IQueryable用于延迟查询(即,它保存查询但仅在枚举时执行)

可以枚举IEnumerable,就是这样。

IList可以添加和删除项目。