c# - 如何将两个列表与要在 ASP.NET Core MVC 中复制的键和值合二为一
问题描述
我有两个来自表格的列表,其中一个包含人名,另一个包含城市
像这样
public IActionResult Index([FromForm] List<string> people,[FromForm] List<string> city)
{
}
现在假设我有三个人约翰、莎拉和汤姆
我有四个城市伦敦,巴黎,DC,罗马
所以,如果用户选择 John and Sarah 和 London, Paris, DC 作为城市
这意味着约翰拥有所有三个城市,而莎拉拥有所有三个城市
我想要的是将两个列表(人员和城市)组合在一起以获得这个结果,对于每个选择的人,他们将选择所有城市,就像我上面提供的示例一样
我尝试使用 Dictionary 但由于它必须具有唯一键它不起作用并且还尝试了 ZIP 但它没有做我想要的。
有没有办法我可以做到这一点!
到目前为止我尝试了什么
public IActionResult Index([FromForm] List<string> people,[FromForm] List<string> city)
{
List<person> personInfo = =new List<person>();
var results =people.Zip(city).ToList();
for(int i=0;i<results.Count;i++)
{
personInfo.add(new person()
{
name=results[i].First,
city=results[i].Second
}
}
}
解决方案
您可以使用元组和SelectMany
.
var results = people.SelectMany(person => cities.Select(city => (person, city))).ToList();
这将返回一个List<(string, string)>
.
现在你可以像这样循环它:
foreach (var result in results)
{
var person = result.person;
var city = result.city;
}
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/value-tuples
推荐阅读
- batch-file - 将多个 .ttf 文件批量附加到 .mkv
- azure - 如何从 Azure 存储资源管理器中删除表数据?
- angularjs - 在 CkEditor 中获取选定的文件并添加自定义上传按钮
- centos6 - 如何将 jboss-eap 6.2 配置为服务并在 CentOS 6.x 和 Linux1 AMI 上设置自动启动
- r - R - 用条件转置列和行
- rest - 如何使用 Gin-Gonic 在 Go 中读取蛇案例 JSON 请求正文
- javascript - 如何在 NetSuite 中滚动到窗口顶部?
- facebook - 每天获取页面的Facebook帖子见解
- cucumber - 为超大型 Web 表单编写黄瓜数据驱动方案的正确 BDD 方法是什么?外部数据文件还是多列数据表?
- reactjs - 反应图表“堆叠:真”不起作用