Jak skonwertować zagnieżdżony obiekt hierarchiczny w celu spłaszczenia obiektów przy użyciu LINQ? Wiem, że możemy łatwo użyć pętli foreach, aby to osiągnąć. Ale zastanawiam się, czy istnieje sposób, aby napisać to w LINQ.LINQ: Jak skonwertować zagnieżdżony obiekt hierarchiczny, aby spłaszczyć obiekt?
class Person{
public int ID {get;set}
public string Name {get;set}
public List<Person> Children {get;}
}
danych:
ID : 1
Name : Jack
Children
2 | Rose
3 | Paul
Chciałbym przekształcić te dane w formacie spłaszczyć jak poniżej.
1 | Jack
2 | Rose
3 | Paul
Jak możemy to zrobić z Linq?
Oczywiście lambdas może się nazywać. Oto Fibonacci używające rekurencyjnego lambda: 'Func fib = null; fib = i => i <= 1? i: fib (i-1) + fib (i-2); ' –
Powiedziałem:" * anonimowy * lambdas nie może nazywać siebie ", dlatego nie może napisać pojedynczego wyrażenia, które zwraca wartość, którą chce - - musi zadeklarować nazwaną funkcję, z którą ma się powtarzać. – mquander
Więc umieszczając coś anonimowego w zmiennej, nie jest już anonimowy? Na przykład. 'var a = new {X = 5};'? Nadal nazywam to, co "a" odnosi się do anonimowego typu. Microsoft bezwarunkowo mówi, że ["Wyrażenie lambda jest funkcją anonimową"] (http://msdn.microsoft.com/en-us/library/bb397687.aspx) i spójrz na drugi przykład [Anonymous Methods] (http: //msdn.microsoft.com/en-us/library/0yw3tz5k.aspx). Prawie wszystko, co anonimowe, należy umieścić w jakiejś nazwanej zmiennej lub parametrze; w przeciwnym razie nie można ich użyć za pomocą kodu. To nie znaczy, że nie są anonimowi. –