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

时间:2013-02-27 13:49:59

标签: 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();

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

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

谢谢

1 个答案:

答案 0 :(得分:12)

替代解决方案 - 来自所需属性数组的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));