这有点像asp.net MVC只是为了示例目的,但我希望能达到这样的目的:
new SelectList(ViewData.Model.Formats.ToList().ForEach(x => index + " - " + x.Name), "ID", "Name");
基本上试图变得聪明并将“index”作为数字1 - n 返回,其中 n 是列表ViewData.Model.Formats
中的项目数,所以我的选择列表在每个条目上都有#前缀。任何简单的方法,或者我正在寻找一个新的列表与附加和放弃lambda技巧?
答案 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方法摇滚!