I am trying to use LINQ (to EF) to get a DISTINCT list and then sort it. All the examples I found sort the result based on the DISTINCT value. But I want to sort it on a different field.
Example: Table with 2 fields (canvasSize and canvasLength);
var sizes = (from s in ent.competitors
select s.canvasSize).Distinct().OrderBy(x => x);
All the examples I found give this type of answer. But it sorts by canvasSize whereas, I want to sort by canvasLength.
I'm stuck ... Any tips are greatly appreciated ...
Per J. Skeet > Additional info:
company canvasSize canvasLength
abc 8x10 8
d 8x10 8
e 10x10 10
f 10x10 10
g 40x40 40
I would like it to be distinct on canvasSize. The problem is that when sorted, it results in this order:
10x10
40x40
8x10
I would like the same result set but sorted using canvasLength so the result is:
8x10
10x10
40x40
I think what you're after may be something like this:
var sizes = (from s in ent.competitors
select new { s.canvasSize, s.canvasLength })
.Distinct()
.OrderBy(x => x.canvasLength);
Update
Based on the extra information in your question, the following should do what you want:
var sizes = ent.competitors
.Select(c => new {c.canvasSize, c.canvasLength})
.Distinct()
.OrderBy(x => x.canvasLength)
.Select(x => x.CanvasSize)
var sizes = ent.competitors
.GroupBy(s => s.canvasSize)
.Select(g => g.First())
.OrderBy(s => s.canvasLength);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With