13

我正在尝试使用 LINQ (to EF) 获取 DISTINCT 列表,然后对其进行排序。我找到的所有示例都根据 DISTINCT 值对结果进行排序。但我想在不同的领域对其进行排序。

示例:具有 2 个字段(canvasSize 和 canvasLength)的表格;

var sizes = (from s in ent.competitors                         
             select s.canvasSize).Distinct().OrderBy(x => x);

我找到的所有例子都给出了这种类型的答案。但它按 canvasSize 排序,而我想按 canvasLength 排序。

我被卡住了......任何提示都非常感谢......

每 J. Skeet > 附加信息:

company  canvasSize  canvasLength

abc       8x10         8
d         8x10         8
e         10x10        10
f         10x10        10
g         40x40        40

我希望它在 canvasSize 上与众不同。问题是在排序时,结果是这样的:

10x10
40x40
8x10  

我想要相同的结果集,但使用 canvasLength 排序,所以结果是:

8x10
10x10
40x40
4

2 回答 2

17

我认为您所追求的可能是这样的:

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)
于 2013-01-31T22:19:42.543 回答
2
var sizes = ent.competitors
               .GroupBy(s => s.canvasSize)
               .Select(g => g.First())
               .OrderBy(s => s.canvasLength);
于 2013-01-31T22:18:45.453 回答