Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Lambda ForEach()索引位置_Asp.net Mvc_Lambda - Fatal编程技术网

Asp.net mvc Lambda ForEach()索引位置

Asp.net mvc Lambda ForEach()索引位置,asp.net-mvc,lambda,Asp.net Mvc,Lambda,这与asp.net MVC有些关联,只是出于示例目的,但我希望实现以下目标: new SelectList(ViewData.Model.Formats.ToList().ForEach(x => index + " - " + x.Name), "ID", "Name"); 基本上,我会尽量聪明地将索引返回为数字1-n,其中n是列表ViewData.Model.Formats中的项数,因此我的选择列表在每个条目上都有一个前缀。有什么简单的方法可以做到这一点,或者我正在考虑用追加和抛弃l

这与asp.net MVC有些关联,只是出于示例目的,但我希望实现以下目标:

new SelectList(ViewData.Model.Formats.ToList().ForEach(x => index + " - " + x.Name), "ID", "Name");
基本上,我会尽量聪明地将索引返回为数字1-n,其中n是列表ViewData.Model.Formats中的项数,因此我的选择列表在每个条目上都有一个前缀。有什么简单的方法可以做到这一点,或者我正在考虑用追加和抛弃lambda技巧来制作一个新的列表吗?

怎么样

int index = 0;
new SelectList(ViewData.Model.Formats.ForEach(x => ++index + " - " + x.Name), "ID", "Name");
我只尝试了lambda表达式的索引捕获。我不知道其他的课程。

怎么样

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

我只尝试了lambda表达式的索引捕获。我不知道其他类。

您可以利用这样一个事实,LINQ的Select可以为您提供每个元素的索引:

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

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

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

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

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

在Neil和Hosam的大力帮助下,我通过以下方式实现了这一点:

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

Anon方法摇滚

在Neil和Hosam的大力帮助下,我通过以下方式实现了这一目标:

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

Anon方法摇滚

我喜欢你的风格!然而,我似乎甚至无法为x分配某些内容。Name ForEachx=>x.Name=test返回一个错误。也许你不能在forEach中重新分配只要x是一个类,你就可以做作业,但我不知道ViewData.Model.Formats的结构,所以很抱歉我在这里帮不了你。还要检查尼尔的答案。在我看来,这更好。霍萨姆,是的,“x”是一个类,但作业是说“不能将void转换为IEnumerable”之类的,并且不允许。我喜欢你的风格!然而,我似乎甚至无法为x分配某些内容。Name ForEachx=>x.Name=test返回一个错误。也许你不能在forEach中重新分配只要x是一个类,你就可以做作业,但我不知道ViewData.Model.Formats的结构,所以很抱歉我在这里帮不了你。还要检查尼尔的答案。在我看来更好。Hosam,是的,“x”是一个类,但作业说明“不能将void转换为IEnumerable”或其他内容,并且不允许它。Great Neil,你能更新你的示例以在选择中包含“ID”吗?Great Neil,你能更新你的示例以在选择中包含“ID”吗?