c# - 如何使用 LINQ 将对象列表中的字段与另一个字段的对应项分配?
问题描述
假设我有一个List<MyClass> myObjects
并且我有int[] numbers
。鉴于:
- 的长度
numbers
等于mObjects.Count
。 我正在使用一个具有其他一些字段和方法的类,例如:
class MyClass { public int Number; public int AnotherNumber; public void WorkWithNumber() { /* Do some work. */ } }
有没有办法使用 linq 将每个项目分配给列表中numbers
的对应项MyClass.Number
?最好使用myObjects.ForEach()
.
解决方案
理想情况下,您应该使用foreach
循环来执行此操作:
foreach (var p in myList.Select((obj, idx) => new { Val = numbers[idx], Obj = obj })) {
p.Obj.Number = p.Val;
}
您可以在没有 的情况下使用相同的技巧foreach
,但该解决方案的可读性会差很多。
推荐阅读
- neo4j - 在neo 4j图中将一条路径(一组路径)收缩为一条边(一组边)
- java - Apache PDFBox 或 Apache FOP 是否提供类似 Birt Report 运行时的功能,通过提供自定义模板来生成动态 PDF?
- domain-driven-design - 在事件源环境中再水化聚合根及其相关实体的最佳方法是什么
- r - 无法在 C for Mac 中编译 R 包
- aws-lambda - 在 S3 存储桶前面通过 Cloudfront 调用的 AWS Lambda 无法承担 Cognito 用户池的角色以进行身份验证
- java - Spring Boot App 在远程 Tomcat 中返回 404
- event-handling - 将与会者添加到活动时超出日历使用限制
- regex - 如何在 shell 脚本条件语句中匹配正则表达式
- amazon-web-services - 如何使用 Terraform 创建具有两个私有 IP 的 EC2 实例
- google-cloud-platform - 通过 GCP 控制台关闭 v0.1 和 v1beta1 端点