C# 使用字典对象的实体框架

C# 使用字典对象的实体框架,c#,entity-framework,dictionary,C#,Entity Framework,Dictionary,在实体框架中,我想看看我是否可以填充一个字典,而不是一个模型。在过去,我总是映射到模型对象。但是我想使用dictionary对象来避免由于多个CLR类型错误而造成的歧义 var dictionaryFlatFee = new Dictionary<int, decimal?>(); var listOfFees = (from p in db.Pricings select new dictionaryFlatFee

在实体框架中,我想看看我是否可以填充一个字典,而不是一个模型。在过去,我总是映射到模型对象。但是我想使用dictionary对象来避免由于多个CLR类型错误而造成的歧义

var dictionaryFlatFee = new Dictionary<int, decimal?>();
var listOfFees = (from p in db.Pricings
                  select new dictionaryFlatFee
                         {
                              p.Id,
                              p.Price,
                         }).AsEnumerable()
                           .ToList();

var dictionaryFlatFee=newdictionary();
var listOfFees=(从p到db.Pricings)
选择new dictionaryFlatFee
{
p、 身份证,
p、 价格,
}).可计算的()
.ToList();

您可以选择所需的数据,并通过ForEach将其放入
词典平台
中,如下所示


var dictionaryFlatFee=newdictionary();
(来自p,单位为分贝价格)
选择新的
{
p、 身份证,
p、 价格,
})
.ToList().ForEach(a=>dictionaryFlatFee.Add(a.Id,a.Price));
另一个选择是方法

var dictionary=db.Pricings.ToDictionary(a=>a.Id,a=>a.Price);

只是为了最后确定答案,因为有些评论让答案更清楚。您只需检索
db.Pricings
并调用
ToDictionary()
方法,该方法是
可枚举API的一部分:

var FeesDictionary = db.Pricings.ToDictionary(key=>key.Id, val=>val.Price);
db.Pricings
返回一个
DbSet
,它实现了
IEnumerable
,因此它使所有
可枚举
方法都可用于管理返回的实体。在将返回值转换为字典之前,您仍然可以
Select()
,但这是非常不必要的,所以请忽略它


我还想向您介绍LINQ,这将极大地提高您对LINQ的了解。

.AsEnumerable()
在这里是多余的。我还认为
选择
有点不必要。但因为我没有测试这个,我只是想我应该发布我知道肯定会有用的东西。英雄联盟让我改变这个,很公平。
Select
可能是不必要的,但它减少了从数据库检索到的数据量,这就是为什么我没有提到它。你在@AluanHaddad上完全正确,这就解决了:只是一个更正:
Select
这里返回
IQueryable
,因为源代码是
IQueryable
,但是
IQueryable
扩展了
IEnumerable
var dictionaryFlatFee=wait db.Pricings.ToDictionaryAsync(pricing=>pricing.Id,pricing=>pricing.Price)我之前回答过,但你接受了其他人的回答。这不公平