我有以下在LinqPad中成功运行的查询:
var results =
from container in Container
join containerType in ContainerType on container.ContainerType equals containerType
where containerType.ContainerTypeID == 2
select new { ContainerID = container.ContainerID, TypeID = container.ContainerTypeID};
results.Dump();
我想更改select以使用索引器,以便select看起来像这样:
select new { ContainerID = container.ContainerID, TypeID = container.ContainerTypeID, ContainerIndex = index };
我似乎无法做到的是选择使用select indexer的正确语法。
感谢您的帮助。
答案 0 :(得分:5)
您无法使用查询表达式格式获取索引,但可以使用点标记来使用overload for Select
。您可以坚持使用大部分查询表达式格式,然后在额外的选择投影中添加索引:
var tmp =
from container in Container
join containerType in ContainerType
on container.ContainerType equals containerType
where containerType.ContainerTypeID == 2
select new { ContainerID = container.ContainerID,
TypeID = container.ContainerTypeID};
var results = tmp.Select((x, index) => new { x.ContainerID, x.TypeID,
ContainerIndex = index });
答案 1 :(得分:1)
我可能遗漏了一些内容,但如果Container
中的项目已经拥有属性ContainerTypeID
,我就不明白为什么需要加入。在我看来,加入ContainerType
并未提供此操作所需的任何额外属性。
因此:
Container
.Where(c => c.ContainerTypeID==2)
.Select((c,i) => new {c.ContainerID, c.TypeID, Index = i})