我有一个Schemas
的集合,其中每个架构都有Name
,Id
和其他几个属性。我只需要预测每个Name
的{{1}}和Id
,因此我在LINQ查询中创建一个匿名类型,如下所示:
Schema
我需要将通过from s in db.Schemas
select new { Id = s.SchemaId, Name = s.Name}
查询运算符投影的上述匿名类型转换为Select
,为此,我需要为上述查询添加进一步的扩展方法重载,如下所示:
Dictionary<int,string>
现在,如何在(from s in db.Schemas
select new { Id = s.SchemaId, Name = s.Name})
.ToDictionary<TSource,int,string>()
重载中访问匿名类型?
我应该用{<1}}类型参数替换?
我有其他方法可以做到这一点,但我想知道是否可以通过访问匿名类型以这种方式完成。任何其他很好的方法也是受欢迎的。
答案 0 :(得分:4)
您可以完全忽略类型参数。
(from s in db.Schemas
select new { Id = s.SchemaId, Name = s.Name})
.ToDictionary(p => p.Id, p => p.Name);
编译器可以为您推断它们。
事实上,您可以在一个步骤中完成此操作:
db.Schemas.ToDictionary(s => s.SchemaId, s => s.Name);
或者至少坚持使用一种LINQ语法:
db.Schemas
.Select(s => new { Id = s.SchemaId, Name = s.Name })
.ToDictionary(p => p.Id, p => p.Name);