IEnumerable <object>是通用数据集的正确容器吗?</object>

时间:2014-04-22 14:00:38

标签: entity-framework

使用Entity Framework,IEnumerable是用于发送回通用数据集的正确容器吗?即当我不想发回一个对象列表,而只是一个通用的结果集。

public IEnumerable<object> SelectPlayerFirstAndLastNameList()
{
   return (from p in rlpEntities.Players select new { p.PlayerFirstName, p.PlayerLastName });
}

感谢。

3 个答案:

答案 0 :(得分:0)

检查此链接Why use ICollection and not IEnumerable or List<T> on many-many/one-many relationships?

这实际上取决于您的方案,但是当您需要迭代时会使用IEnumerable<>,而当您需要迭代和修改数据时会使用List<>

IEnunerable<> - http://msdn.microsoft.com/en-us/library/system.collections.ienumerable.aspx List<> - http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx 您也可以使用泛型来传递您要查询的任何类型,例如

public IEnumerable<T> SelectPlayerFirstAndLastNameList<T>()
{
    return (IEnumerable<T>)(from p in rlpEntities.Players);
}

因此,您可以传递任一对象或已知的已定义类型。要打电话给你,你会这样做

var x = SelectPlayerFirstAndLastNameList<YourClassHere>();

答案 1 :(得分:0)

这是reference article,它讨论IList(继承ICollection(和IEnumerable(IQueryable的基本通用接口,ICollection,List)。

以下链接说明了仿制药和它的差异&amp;它的用法,

Difference among IEnumerable , IQueryable, ICollection,IList, List

IEnumerable vs. ICollection vs. IQueryable vs. IList

看看你的linq,关于具体对象&amp;将来可以进一步扩展。 IQueryable 适合这种情况,因为它让客户端迭代/添加/删除项目。

答案 2 :(得分:0)

我认为你所拥有的是正确的,但你自己决定是否应该使用它。

来自备注部分的MSDN: Anonymous Types

  

匿名类型是直接从object派生的类类型   不能转换为除object之外的任何类型。

  

传递匿名类型或包含匿名的集合   types,作为方法的参数,可以将参数声明为   类型对象。但是,这样做会破坏强类型的目的。   如果必须存储查询结果或将其传递到方法之外   边界,考虑使用普通的命名结构或类而不是   匿名类型。