tutorial net mvc asp c# .net asp.net-mvc json

c# - net - IEnumerable<T> VS IList<T> VS IQueryable<T>



return json web api controller c# (3)

Cada interfaz tiene su propio conjunto de usos.

IQueryable es para consultas diferidas (es decir, guarda la consulta pero solo la ejecuta cuando se enumera)

IEnumerable puede ser enumerado y eso es todo.

IList puede tener artículos añadidos y eliminados.

Nuevo en la escena de MVC.net (y .net para esa materia), pero parece que encuentro una amplia gama de opciones cuando quiero llenar una "lista" con datos. En mi caso en este momento, me gustaría rellenar una lista de una consulta de selección de elementos y mostrar los resultados en JSON para su salida, así que tenga paciencia conmigo ...

Por lo tanto, mi clase de modelo de vista es algo como:

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

Y luego me gustaría rellenarlo con el resultado de mi consulta:

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

Entonces, ¿haría un bucle de la salida en mi Lista para que luego pueda emitir en mi cadena de retorno de Json? ¿Y cuando uso una LISTA VS IENUMERABLE VS IQUERYABLE ?

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


Mis reglas de oro:

  • Use una Lista cuando tenga que agregar, eliminar o referirse a un elemento por índice.

  • Use un IQueryable cuando tenga que ejecutar consultas ad-hoc contra él.

  • Utilice IEnumerable por defecto.

Parece que ya está haciendo la consulta "en" su base de datos, por lo que sugeriría usar la versión más sencilla: IEnumerable para simplemente poder recorrer los resultados.


Si fuera nuevo en .NET y C #, pasaría un tiempo investigando y conociendo cuáles son los diferentes tipos de colecciones, en qué se diferencian y cuándo usarlos. Usará colecciones tan a menudo que no puede darse el lujo de tener un resumen "simple de una línea" como los demás encuestados.

Aquí hay una buena guía sobre los tipos de colección .NET: http://msdn.microsoft.com/en-us/library/0ytkdh4s.aspx

IQueryable es su propia bestia especial y merece su propia guía: http://msdn.microsoft.com/en-us/library/system.linq.iqueryable.aspx