Linq对列表进行分组,求和,排序
1.分组之后形成一个新的类的列表(分组过程中求和),最后又进行了一次排序
public List<StaticForestArea> GroupForestList(List<FeatWithBSM> ListBSM)
{
var res = ListBSM.GroupBy(x => x.LZ).Select(x =>
new StaticForestArea
{
LZ = x.Key,
Area = x.Sum(t => (t.geometry as IArea).Area),
}).ToList();
res = (from x in res
orderby (x.Area) descending
select x).ToList();
return res;
}
public class StaticForestArea
{
public string LZ { get; set; }
public double Area { get; set; }
}
2.简单的根据面积进行排序
public class FeatWithBSM
{
public IFeature feature { get; set; }
public IGeometry geometry { get; set; }
public string BSM { get; set; }
public string LZ { get; set; }
public string ZDGN { get; set; }
public string TreeCategory { get; set; }
public double ZXJL { get; set; }
}
}
public void OrderList(List<FeatWithBSM> ListBSM)
{
var res = (from x in ListBSM
orderby (x.geometry as IArea).Area descending
select x).ToList<FeatWithBSM>();
this.features= res;
}
3.对一个大列表根据标识码不同,分成一个个的小列表
List<FeatWithBSM> featureList = searchFeatures("", layer); group1 = featureList.GroupBy(x => x.BSM).Select(x => new FeatureCate { BSM = x.Key, features = x.ToList() }).ToList(); public class FeatureCate { public List<FeatWithBSM> features; public string BSM; public double SumArea; public string ZDGN_1="-";//主导功能 public string ZYSZ_1;//主要树种 public string LZ_1;//林种 public double ZXJL_1;//总蓄积量 }

浙公网安备 33010602011771号