Lambda ForEach()索引位置

时间:2009-01-09 06:16:56

标签: asp.net-mvc lambda

这有点像asp.net MVC只是为了示例目的,但我希望能达到这样的目的:

new SelectList(ViewData.Model.Formats.ToList().ForEach(x => index + " - " + x.Name), "ID", "Name");

基本上试图变得聪明并将“index”作为数字1 - n 返回,其中 n 是列表ViewData.Model.Formats中的项目数,所以我的选择列表在每个条目上都有#前缀。任何简单的方法,或者我正在寻找一个新的列表与附加和放弃lambda技巧?

3 个答案:

答案 0 :(得分:4)

您可以使用LINQ的Select可以为您提供每个元素的索引:

new SelectList(ViewData.Model.Formats.Select((x, i) => (i + 1) + " - " + x.Name, "ID", "Name");

请注意,这并不意味着任何数据库访问,只是标准的LINQ to Objects。

答案 1 :(得分:1)

怎么样

int index = 0;
new SelectList(ViewData.Model.Formats.ForEach(x => ++index + " - " + x.Name), "ID", "Name");

(我只尝试了lambda表达式并捕获了index。我不知道其他类。)

答案 2 :(得分:-1)

在Neil和Hosam的大力帮助下,我得到了以下内容:

new SelectList(ViewData.Model.MessageTypeFieldFormats.Select((x, i) => new { ID = x.ID, Name = (i + 1) + " - " + x.Name })

Anon方法摇滚!