猿问

Linq Order通过对具有相同集合的对象进行分组

我有一组对象,它们本身包含一组对象。


private class Pilot

{

    public string Name;

    public HashSet<string> Skills;

}

以下是一些测试数据:


public void TestSetComparison()

{

    var pilots = new[] 

    {

        new Pilot { Name = "Smith", Skills = new HashSet<string>(new[] { "B-52", "F-14" }) },

        new Pilot { Name = "Higgins", Skills = new HashSet<string>(new[] { "Concorde", "F-14" }) },

        new Pilot { Name = "Jones", Skills = new HashSet<string>(new[] { "F-14", "B-52" }) },

        new Pilot { Name = "Wilson", Skills = new HashSet<string>(new[] { "F-14", "Concorde" }) },

        new Pilot { Name = "Celko", Skills = new HashSet<string>(new[] { "Piper Cub" }) },

    };

我想OrderBy在Linq中使用:

  • 史密斯和琼斯被命令在一起,因为他们乘坐同一架飞机

  • 希金斯和威尔逊被命令在一起,因为他们乘坐同一架飞机

  • 希金斯+威尔逊在史密斯+琼斯之前还是之后都没关系

  • 最好是史密斯在琼斯之前(稳定排序),但这不是太重要

我想我需要实现一个IComparer<Pilot>传递给,OrderBy但不知道如何处理“无所谓”方面(如上)和稳定排序。

更新:

我希望输出是相同五个对象的数组,但顺序不同。 Pilot


FFIVE
浏览 155回答 3
3回答

哆啦的时光机

这是orderby的样本&nbsp; var groups = from c in GridImage (Your List)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;orderby c.grouping (Your Item inside List)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;group c by c.grouping;
随时随地看视频慕课网APP
我要回答