我正在使用Entity Framework从数据库中选择条目
List<Entry> entries = dbContext.entries.ToList();
Codeanalysis告诉我警告CA1002:我发现我应该使用Collection
代替List
。但是没有.ToCollection()
方法。使用EF时这个警告是否无效或者那里的最佳做法是什么?
更新: 做的时候
Collection<Entry> entries = dbContext.entries.ToList();
它说像
类型列表
<Entry>
无法转换为集合<Entry>
答案 0 :(得分:2)
没用。它的含义是,您可以使用其中一个通用集合来存储结果,而不是使用通用列表。
我发现您使用的是EF,因此我的dbContext.Entries
很可能是IQueryable
,当您使用ToList()
时,它会实现可查询并为您提供结果。
因此,为了抑制错误,你可以使用类似的东西:
ICollection<Entry> collection = new List<Entry>();
或以类似的方式将结果转换为集合
答案 1 :(得分:2)
有问题的代码分析点并不是抱怨您在方法中使用ToList()
,而是从方法中返回List<T>
如果您更改签名(例如),那么它会很高兴:
public ICollection<Entry> GetEntries()
{
return dbSet.Entries.ToList();
}
答案 2 :(得分:1)
也许写一个扩展方法? 没有测试过这段代码,但是这样:
public static Collection<T> ToCollection<T>
(this IEnumerable<T> source)
{
if (source == null)
{
throw new ArgumentNullException("source");
}
return new Collection<T>(source);
}