从对象列表中,将相同(或可为空)类型的多个属性放入不同的列表中

时间:2019-01-22 23:15:37

标签: c# linq

void transposarMatriu(char matriu_ori[][T_DIM_MAX], char *matriu_dst[][T_DIM_MAX], int nfiles, int ncols) { ... 个具有许多属性的对象中,每个对象都具有三个不同的属性,RegionID,DistrictID和SuburbID,我想从每个对象中提取它们并将它们放入一个单独的列表中。 RegionID的类型为List,DistrictID和SuburbID的类型为long。我想要将这三个属性提取到类型为long?的单个不同列表中的最快,最简单的方法。

以下方法有效,但看起来不太优雅:

long?

我可以使用单个List<long> regionIDsLong = objectList.Select(x => x.RegionID).ToList(); List<long?> regionIDs = regionIDsLong.Cast<long?>().ToList(); List<long?> districtIDs = objectList.Select(x => x.DistrictID).ToList(); List<long?> suburbIDs = objectList.Select(x => x.SuburbID).ToList(); List<long?> locationIDs = regionIDs.Concat(districtIDs).Concat(suburbIDs).Distinct().ToList(); Select语句或类似的语句吗?

1 个答案:

答案 0 :(得分:1)

这应该可行,并且要短一些。它为该类的每个实例创建一个数组,然后将它们展平并将不同的值转换为列表。

List<long?> locationIds = objectList.Select(x => new[] { x.RegionID, x.DistrictID, x.SuburbID })
                                    .SelectMany(x => x).Distinct().ToList();