C# Can';无法得到我需要的正确查询结果
我有一个目标C# Can';无法得到我需要的正确查询结果,c#,recursion,linq,C#,Recursion,Linq,我有一个目标 class item { Guid id; String name; List<item> childs;} 类项{Guid id;字符串名称;列表子项;} 它的数据有两部分 咖啡厅 --约翰 ----盒子 --罗密欧 及 咖啡厅 --约翰 --罗密欧 ----盒子 所以,盒子刚换了主人 现在我需要把这个结构作为一个字符串 因此,它必须是: 咖啡馆,约翰,盒子,罗密欧 及 咖啡馆,约翰,罗密欧,盒子 我有密码: public static IEnumerable&l
class item { Guid id; String name; List<item> childs;}
类项{Guid id;字符串名称;列表子项;}
它的数据有两部分
咖啡厅
--约翰
----盒子
--罗密欧
及
咖啡厅
--约翰
--罗密欧
----盒子
所以,盒子刚换了主人
现在我需要把这个结构作为一个字符串
因此,它必须是:
咖啡馆,约翰,盒子,罗密欧
及
咖啡馆,约翰,罗密欧,盒子
我有密码:
public static IEnumerable<item> get_in_one_row(this IEnumerable<item> itemsTree)
{
return itemsTree.Select(p=>p).Union(itemsTree.SelectMany(p=>p.childs.get_in_one_row()));
}
public static IEnumerable get_在一行中(此IEnumerable itemsTree)
{
返回itemsTree.Select(p=>p.Union)(itemsTree.SelectMany(p=>p.childs.get_in_one_row());
}
但我总是得到:咖啡馆、约翰、罗密欧、盒子——不管谁是盒子的主人
我该怎么办
谢谢。要按顺序获得结果,您需要以不同的方式遍历树:
public static IEnumerable<item> get_in_one_row(this IEnumerable<item> itemsTree)
{
return itemsTree.SelectMany(p => Enumerable.Repeat(p,1).Concat(p.childs.get_in_one_row()));
}
public static IEnumerable get_在一行中(此IEnumerable itemsTree)
{
returnitemstree.SelectMany(p=>Enumerable.Repeat(p,1).Concat(p.childs.get_in_one_row());
}
Union不保证维持秩序。它做一个独特的操作。使用Concat。还有其他错误,因为对于不同的输入,您应该至少看到不同的输出。可能是错的,但为什么什么都没有改变。我觉得你误解了什么,或者输入的不是你认为的。