3

これは私のタイプです:

public class MyObj {
    public long Number { get; set; }
    public string Name { get; set; }
    public string Message { get; set; }
    public DateTime RegisterDate { get; set; }
}

だから私はのリストを持っていますそして、リストをオブジェクトのオブジェクトとオブジェクトのオブジェクトが等しいMyobjいくつかのリストに分割する必要があります。NameNumberNameNumber

このサンプルを想定します:

List<MyObj> MyObjects = new List<MyObj>{
                new MyObj() { Number = 1, Name = "BMW", Message = "msg1", RegisterDate = DateTime.Now },
                new MyObj() { Number = 1, Name = "BMW", Message = "msg2", RegisterDate = DateTime.Now },
                new MyObj() { Number = 1, Name = "BMW", Message = "msg3", RegisterDate = DateTime.Now },
                new MyObj() { Number = 1, Name = "Honda", Message = "msg11", RegisterDate = DateTime.Now },
                new MyObj() { Number = 1, Name = "Honda", Message = "msg12", RegisterDate = DateTime.Now },
                new MyObj() { Number = 2, Name = "BMW", Message = "msg22", RegisterDate = DateTime.Now },
                new MyObj() { Number = 2, Name = "BMW", Message = "msg23", RegisterDate = DateTime.Now },
                new MyObj() { Number = 2, Name = "BMW", Message = "msg24", RegisterDate = DateTime.Now },
                new MyObj() { Number = 2, Name = "Honda", Message = "msg30", RegisterDate = DateTime.Now },
                new MyObj() { Number = 3, Name = "BMW", Message = "msg41", RegisterDate = DateTime.Now },
                new MyObj() { Number = 3, Name = "BMW", Message = "msg42", RegisterDate = DateTime.Now },
                new MyObj() { Number = 3, Name = "Ford", Message = "msg51", RegisterDate = DateTime.Now },
                new MyObj() { Number = 3, Name = "Ford", Message = "msg52", RegisterDate = DateTime.Now },
                new MyObj() { Number = 3, Name = "Ford", Message = "msg53", RegisterDate = DateTime.Now }
            };

だから私は必要ですList<List<MyObj>>

        List<MyObj> MyObjectwith1AndBMW = new List<MyObj> {
            new MyObj() { Number = 1, Name = "BMW", Message = "msg1", RegisterDate = DateTime.Now },
            new MyObj() { Number = 1, Name = "BMW", Message = "msg2", RegisterDate = DateTime.Now },
            new MyObj() { Number = 1, Name = "BMW", Message = "msg3", RegisterDate = DateTime.Now }
        };

        List<MyObj> MyObjectWith1AndHonda = new List<MyObj> {
            new MyObj() { Number = 1, Name = "Honda", Message = "msg11", RegisterDate = DateTime.Now },
            new MyObj() { Number = 1, Name = "Honda", Message = "msg12", RegisterDate = DateTime.Now }
        };

        List<MyObj> MyObjectWith2AndBMW = new List<MyObj> {
            new MyObj() { Number = 2, Name = "BMW", Message = "msg22", RegisterDate = DateTime.Now },
            new MyObj() { Number = 2, Name = "BMW", Message = "msg23", RegisterDate = DateTime.Now },
            new MyObj() { Number = 2, Name = "BMW", Message = "msg24", RegisterDate = DateTime.Now }
        };

        List<MyObj> MyObjectWith2AndHonda = new List<MyObj> {
            new MyObj() { Number = 2, Name = "Honda", Message = "msg30", RegisterDate = DateTime.Now }
        };

        List<MyObj> MyObjectwith3AndBMW = new List<MyObj> {
            new MyObj() { Number = 3, Name = "BMW", Message = "msg41", RegisterDate = DateTime.Now },
            new MyObj() { Number = 3, Name = "BMW", Message = "msg42", RegisterDate = DateTime.Now }
        };

        List<MyObj> MyObjectWith3AndFord = new List<MyObj> {
            new MyObj() { Number = 3, Name = "Ford", Message = "msg51", RegisterDate = DateTime.Now },
            new MyObj() { Number = 3, Name = "Ford", Message = "msg52", RegisterDate = DateTime.Now },
            new MyObj() { Number = 3, Name = "Ford", Message = "msg53", RegisterDate = DateTime.Now }
        };

結果は次のとおりです。

List<List<MyObj>> result = new List<List<MyObj>> {
            MyObjectwith1AndBMW,
            MyObjectWith1AndHonda,
            MyObjectWith2AndBMW,
            MyObjectWith2AndHonda,
            MyObjectwith3AndBMW,
            MyObjectWith3AndFord
 };

あなたの提案は何ですか?MyObj同じ名前と同じ番号のリストを見つけるにはどうすればよいですか?

4

2 に答える 2

7
  List<List<MyObj>> result = MyObjects.GroupBy(m => new { m.Name, m.Number })
                            .Select(g => g.ToList())
                            .ToList();
于 2012-11-12T07:49:59.477 に答える
0
var groups = (from row in MyObjects
              group row by new { row.Number, row.Name } into grp
              select grp.ToList()).ToList();

これはand (一緒に)List<List<MyObj>>によってグループ化されます。.Number.Name

于 2012-11-12T07:50:23.067 に答える