c# - 使用 LINQ 编译唯一对象列表
问题描述
有伪代码
class Bar {int BarId;}
class Foo {
List<Bar> Bars;
}
使用 Linq,我应该如何从 foo 列表中选择所有可用的唯一条?
List<Foo> foos = GetFoos(); // anything
List<Bar> allBars = foos.Select(f=>f.Bars)...?
解决方案
您可以使用SelectMany()
如下 Linq 方法:
List<Bar> allBars = foos.SelectMany(f => f.Bars).ToList();
如果您在列表中需要不同的 Bar 实例,请添加Distinct()
如下:
List<Bar> allBars = foos.SelectMany(f => f.Bars).Distinct().ToList();
来源微软文档:
如果要从某些自定义数据类型的对象序列中返回不同的元素,则必须在类中实现 IEquatable 通用接口。
推荐阅读
- docker - docker ENTRYPOINT 上的多个命令
- php - 使用 MailGun API 验证电子邮件地址
- c++ - windows类型转linux
- python - 并行运行 openai-gym 环境
- php - 后退按钮后重新加载页面但保持滚动位置
- python - 反转从 int 转换的字符串时,不会打印结尾的 0
- swift - 如何比较两个字符串以查看一个是否大于另一个
- r - LOESS 置信区间线在 R 中看起来参差不齐(即不平滑)
- salesforce - 无法用 Lightning:navigation 或 force:navigateToSObject 替换“force:navigateToURL”
- python - Pandas Dataframe 根据条件通过前一个更新行值