我正在尝试使用LINQ(到EF)来获取一个DISTINCT 列表,然后对其进行排序。我找到的所有示例都根据 DISTINCT 值对结果进行排序。但我想在不同的领域对其进行排序。
示例:包含 2 个字段(画布大小和画布长度)的表格;
var sizes = (from s in ent.competitors
select s.canvasSize).Distinct().OrderBy(x => x);
我找到的所有例子都给出了这种类型的答案。但它按画布大小排序,而我想按画布长度排序。
我被卡住了。。。任何提示都非常感谢...
Per J. Skeet> 其他信息:
company canvasSize canvasLength
abc 8x10 8
d 8x10 8
e 10x10 10
f 10x10 10
g 40x40 40
我希望它在画布上与众不同。问题是排序时,它会产生以下顺序:
10x10
40x40
8x10
我想要相同的结果集,但使用 canvasLength 排序,因此结果为:
8x10
10x10
40x40
我认为
你所追求的可能是这样的:
var sizes = (from s in ent.competitors
select new { s.canvasSize, s.canvasLength })
.Distinct()
.OrderBy(x => x.canvasLength);
更新
根据问题中的额外信息,以下内容应该可以满足您的需求:
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);