Let's say I have the following data,
data: {
variations: [{
steps: [
{ Name: "Crawl", Status: "Complete" },
{ Name: "Walk", Status: "InProgress" }
]
},{
steps: [
{ Name: "Crawl", Status: "Complete" },
{ Name: "Walk", Status: "Complete" },
{ Name: "Run", Status: "NotStarted" }
]
}]
}
How would I arrive at this set of data using linq.js? The resulting set of data is the unique steps across all variations. Notice, the duplicate Crawl is not in the result.
[
{ Name: "Crawl", Status: "Complete" },
{ Name: "Walk", Status: "InProgress" },
{ Name: "Walk", Status: "Complete" },
{ Name: "Run", Status: "NotStarted" }
]
I have tried many binations of Select and SelectMany, but I'm having no luck.
Let's say I have the following data,
data: {
variations: [{
steps: [
{ Name: "Crawl", Status: "Complete" },
{ Name: "Walk", Status: "InProgress" }
]
},{
steps: [
{ Name: "Crawl", Status: "Complete" },
{ Name: "Walk", Status: "Complete" },
{ Name: "Run", Status: "NotStarted" }
]
}]
}
How would I arrive at this set of data using linq.js? The resulting set of data is the unique steps across all variations. Notice, the duplicate Crawl is not in the result.
[
{ Name: "Crawl", Status: "Complete" },
{ Name: "Walk", Status: "InProgress" },
{ Name: "Walk", Status: "Complete" },
{ Name: "Run", Status: "NotStarted" }
]
I have tried many binations of Select and SelectMany, but I'm having no luck.
First you'll need to flatten to an array of steps. Once you have that, you'll have to pick out the distinct copies of the steps. Since you're dealing with objects, you'll need to provide a parer. I would just bine the properties that make it distinct into a string.
var query = Enumerable.From(result.data.variations)
.SelectMany("$.steps")
.Distinct("[$.Name, $.Status].join(',')")
.ToArray();