linq实现行转列

版权声明:本人的作品仅供研究目的,如果读者利用本人的作品从事其他行为,与本人无关 https://blog.csdn.net/oShuangYue12/article/details/82377457
nt maxcount = Model
        .SelectMany(h => h.DetailList).OrderBy(h => h.DetailType)
        .GroupBy(h => h.DetailType).Select(h => h.Count()).Max();
    int Fitsetcount = Model.SelectMany(h => h.DetailList).OrderBy(h => h.DetailType)
          .GroupBy(h => h.DetailType).FirstOrDefault().Count();
List<List<Model>>  QuantumList=  Model
        .SelectMany(h => h.DetailList).OrderBy(h => h.DetailType)
        .GroupBy(h => h.DetailType).Skip(1)
        .Aggregate(Model.SelectMany(h => h.DetailList).OrderBy(h => h.DetailType)
        .GroupBy(h => h.DetailType).FirstOrDefault().OrderBy(h=>h.FSeq)
        .Select(h => new List<Model>() { h }).Union(System.Linq.Enumerable.Repeat(new List<Model>() { new Model() }, Math.Abs(maxcount - Fitsetcount)).ToList()), 
        (t, s) =>
           t.Zip(s.OrderBy(h => h.FSeq).Select(h => new List<Model>() { h }).Union(System.Linq.Enumerable.Repeat(new List<Model>(){new Model()}, Math.Abs(maxcount - s.Count())).ToList()), (n, m) => n.Concat(m).ToList())       
         ).ToList();

猜你喜欢

转载自blog.csdn.net/oShuangYue12/article/details/82377457