我只有一个数据列表,例如
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)];
}
我正在尝试应用此方法,但它向我显示了无效表达式的错误。 那么如何将列表转换为多维数组?
答案 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 {;}
}
}