如何在C#中将列表项转换为多维数组?

时间:2019-04-30 09:39:19

标签: c# list arraylist multidimensional-array

我只有一个数据列表,例如

List 0 index Contains : BlockId = 438001,DistrictId = 438,TownId = 0,UserId = 1077
UserTypeId = 4,VillageId = 238047,ZoneId = 1018
List 1 index contains : BlockId = 438001,DistrictId = 438,TownId = 0,UserId = 1077,UserTypeId = 4,VillageId = 238048,ZoneId = 1018
List 2 index contains : BlockId = 438002,DistrictId = 438,TownId = 0,UserId = 1077,UserTypeId = 4,VillageId = 238138,ZoneId = 1018

现在我想根据这样创建一个多维数组 public List<int>[][] arrayList{get;set;}

我需要将列表数据转换为像

这样的多维数组列表
[0]
[0] -> Count 1 -> 438001  --> Showing blockId
[1]-> Count 3 -> 238047,238048 --> showing villageId


[1]
[0]->count 1 -> 438002
[1]->count 2 -> 238138
[2]->count 3-> 0 --> showing townId



var data = user.getUserRolebyUserId(userId);
var blkList = data.GroupBy(x => x.BlockId);
List<int>[][] lst;
foreach (var item in data.GroupBy(x => x.BlockId))
{
    List<int>[][] array = [item.Key,item.Select(x => x.VillageId).ToList(), item.Select(q => q.TownId)];
}

我正在尝试应用此方法,但它向我显示了无效表达式的错误。 那么如何将列表转换为多维数组?

1 个答案:

答案 0 :(得分:1)

使用字典:

   class Program
    {
        static void Main(string[] args)
        {
            List<Location> locations = new List<Location>() {
                new Location() { BlockId = 438001,DistrictId = 438,TownId = 0,UserId = 1077, UserTypeId = 4,VillageId = 238047,ZoneId = 1018 },
                new Location() { BlockId = 438001,DistrictId = 438,TownId = 0,UserId = 1077,UserTypeId = 4,VillageId = 238048,ZoneId = 1018},
                new Location() { BlockId = 438002,DistrictId = 438,TownId = 0,UserId = 1077,UserTypeId = 4,VillageId = 238138,ZoneId = 1018 }
            };

            Dictionary<int, List<int>> dict = locations
                .GroupBy(x => x.BlockId, y => y.Items)
                .ToDictionary(x => x.Key, y => y.FirstOrDefault());

        }
    }
    public class Location
    {
        public int BlockId { get; set; }
        public int DistrictId { get; set; }
        public int TownId { get; set; }
        public int UserId { get; set; }
        public int UserTypeId { get; set; }
        public int VillageId { get; set; }
        public int ZoneId { get; set; }

        public List<int> Items {
            get { return new List<int> { BlockId, DistrictId, TownId, UserId, UserTypeId, VillageId, ZoneId }; }
            set {;}
        }
    }