LINQ:由同一类型对象集合的多个属性组成的单个列表

标签 linq entity-framework

 var userIds = books.Select( i => new{i.CreatedById,i.ModifiedById}).Distinct();

 var lst = from i in userIds select i.CreatedById;

 var lst1 = from i in userIds select i.ModifiedById;

 var lstfinal = lst.Concat(lst1).Distinct();

任何其他方式获得相同的结果???

这里:books 是书籍对象的集合,即 IEnumerable。

谢谢

最佳答案

替代解决方案 - SelectMany 来自所需属性的数组:

var lstfinal = books.SelectMany(b => new [] { b.CreatedById, b.ModifiedById })
                    .Distinct();

或枚举书籍收藏两次。 Union 排除重复项,因此您无需调用 Distinct (我会走这条路):
var lstfinal = books.Select(b => b.CreatedById)
                    .Union(books.Select(b => b.ModifiedById));

关于LINQ:由同一类型对象集合的多个属性组成的单个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15113740/

相关文章:

c# - 使用 linq to entities c# 的 gridview_sorting 事件

c# - Webapi 计算特定的获取请求

c# - 使用 Entity Framework 将存储过程结果保存在数据集中

c# - 使用实体将整个数据库导出到 .sql 文件

c# - 更新实体,所有更改不保存

c# - 为什么我的代码在每个可能的点都关闭它后仍然在进行延迟加载?

c# - 列表中的SelectMany:“无法根据使用情况推断类型自变量”

c# - Entity Framework 中有序集的并集,然后跳过

c# - EntityFrameworkCore 中的 IDbAsyncQueryProvider

c# - 使用 linq 生成合并列表