And*_*ter 2 c# linq counter dictionary entity-framework
我得到了一个带有EF的linq查询并获得了一个项目列表.现在我想创建一个字典,其中包含项目的增量索引和项目本身.
我喜欢这样:
result = context
.Items
.Where(b => !b.Deleted)
.OrderBy(b => b.Name)
.ToDictionary(COUNTHERE, b => b.Name)
Run Code Online (Sandbox Code Playgroud)
因此字典必须如下所示:
1: "item1"
2: "item2"
3: "item5"
4: "item10"
5: "item100"
Run Code Online (Sandbox Code Playgroud)
我认为您需要的是将项目名称作为键而不是计数作为键,因为如果有两个具有相同计数的项目,则会抛出已添加该键的异常.
然后您可以使用GroupBy之前,ToDictionary以便您可以计算它.
result = context
.Items
.Where(b => !b.Deleted)
.GroupBy(x => x.Name)
.ToDictionary(g => g.Key, g => g.Count())
.OrderBy(g => g.Key);
Run Code Online (Sandbox Code Playgroud)
根据您更新的评论,您需要的是
result = context
.Items
.Where(b => !b.Deleted)
.OrderBy(b => b.Name)
.AsEnumerable()
.Select((v,i) => new { i, v.Name })
.ToDictionary(g => g.i + 1, g => g.Name);
Run Code Online (Sandbox Code Playgroud)
请注意,您需要添加AsEnumerable以使该Select子句作为对象的linq(Select在L2S中不支持接受索引).
| 归档时间: |
|
| 查看次数: |
1862 次 |
| 最近记录: |