Linq 如何从列表创建树列表
我陷入了将普通列表转换为树型列表的过程中。我必须转换如下格式: 我们可以创建父子关系列表吗Linq 如何从列表创建树列表,linq,c#-4.0,Linq,C# 4.0,我陷入了将普通列表转换为树型列表的过程中。我必须转换如下格式: 我们可以创建父子关系列表吗 State County Name Name2 County Name3 Name4 下面是我的清单: { "data": [ { "name": "D1", "stateName": "Georgia", "stateId": 1, "countyNa
State
County
Name
Name2
County
Name3
Name4
下面是我的清单:
{
"data": [
{
"name": "D1",
"stateName": "Georgia",
"stateId": 1,
"countyName": "Apache",
"countyId": 1
},
{
"name": "D2",
"stateName": "Georgia",
"stateId": 1,
"countyName": "Apache",
"countyId": 1
},
{
"name": "D3",
"stateName": "Georgia",
"stateId": 1,
"countyName": "Apache",
"countyId": 1
},
{
"name": "D4",
"stateName": "Georgia",
"stateId": 1,
"countyName": "Apache",
"countyId": 1
},
{
"name": "D5",
"stateName": "Georgia",
"stateId": 1,
"countyName": "Catron",
"countyId": 2
}
],
"totalRowCount": 0,
"errors": []
}
有没有办法让我有一个树列表。任何帮助都将不胜感激
我使用下面的树列表代码,但它没有给我正确的数据
var lstTaxLocation = (from loc in _queryEntities.TaxLocations
join st in _queryEntities.States on loc.StateId equals st.Id
join cou in _queryEntities.Counties on loc.CountyId equals cou.Id
group new { loc, st, cou } by new { st.Id } into pg
let datagroup = pg.FirstOrDefault()
let location = datagroup.loc
let state = datagroup.st
let county = datagroup.cou
select new TaxLocationDto
{
Name = location.Name,
StateId = state.Id,
StateName = state.Name,
CountyName = county.Name,
CountyId = county.Id
});
这对于LINQ来说非常简单 假设您的数据已经反序列化为C#对象: 然后,您可以使用LINQ的和
这将为您提供所要查找的结构,但每个“节点”将是整个对象,而不仅仅是
名称
属性。如果需要的话,您也可以得到它,但是将整个对象放在那里很可能不仅仅是一个属性 我不能使用ThenBy方法。谢谢,这是我的错,因为我是第一次开始我的一天ThenBy
只是OrderBy
的必然结果。我已经更新了我的答案以满足您的需要。它正在检索数据,但不是类型转换到Ilist。它给了我一个错误“无法将'Grouping[my class]'类型的对象强制转换为类型my class”“。没错。请删除该错误,然后对组进行操作。您可以对该变量执行foreach
,以获取子组。
public class Data
{
public string Name { get; set; }
public string StateName { get; set; }
public int StateId { get; set; }
public string CountyName { get; set; }
public int CountyId { get; set; }
}
var treeList = data.GroupBy(d => d.StateName)
.SelectMany(group => group.GroupBy(d => d.CountyName));