内存操作IEnumerable<T>,使用SelectMany方法将集合中的两列转成一列,一行转两行

原始数据:

var originalList = new List<dynamic>()
            {
                new{ Name="张三",age=10,Title1="职业一",Title2="职业二"},
                new{ Name="李四",age=10,Title1="职业一",Title2="职业二"},
                new{ Name="王五",age=10,Title1="职业一",Title2="职业二"}
            };

  转为同一列值:

var currentList = originalList.SelectMany(p => new[] { p.Title1, p.Title2 }, (p, t) => new { p.Name, p.age, t }).ToList();

  结果:

public static IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(this IEnumerable<TSource> source, Func<TSource, IEnumerable<TCollection>> collectionSelector, Func<TSource, TCollection, TResult> resultSelector)
resultSelector的func委托中,可以操作中间序列TCollection,达到最终效果图,在不适用sql语句union等操作时,内存中直接操作集合,此方法非常方便。

猜你喜欢

转载自www.cnblogs.com/yzhj/p/12202476.html
今日推荐