Ankit
Ankit

Reputation: 57

How to convert list item to multidimensional array in c#?

I have a single list of data like

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

And now I want to create a multidimensional array according to that like public List<int>[][] arrayList{get;set;}

I need to convert list data to multidimensional array list like

[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)];
}

I am trying to applying this but it's showing me error for Invalid Expression. So How can I convert list into multidimensional array ?

Upvotes: 0

Views: 335

Answers (1)

jdweng
jdweng

Reputation: 34421

Use a Dictionary :

   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 {;}
        }
    }

Upvotes: 1

Related Questions