使用Entity Framework,IEnumerable是用于发送回通用数据集的正确容器吗?即当我不想发回一个对象列表,而只是一个通用的结果集。
public IEnumerable<object> SelectPlayerFirstAndLastNameList()
{
return (from p in rlpEntities.Players select new { p.PlayerFirstName, p.PlayerLastName });
}
感谢。
答案 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,作为方法的参数,可以将参数声明为 类型对象。但是,这样做会破坏强类型的目的。 如果必须存储查询结果或将其传递到方法之外 边界,考虑使用普通的命名结构或类而不是 匿名类型。