C#/ LINQ选择具有相同属性的对象子列表

Pie*_*rOz 3 c# linq

我是LINQ的初学者,我想知道是否可以使用它来解决以下问题:

我有一节课:

public class myClass
{
  public int Id { get; set; }
  public int Category { get; set; }
  public string Text { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有一个myClass对象列表.

public List<myClass> myList;
Run Code Online (Sandbox Code Playgroud)

我可以轻松地使用LINQ myList包含myClass属性值Text不止一次的所有对象的子列表.

比如我有

myClass A = new myClass { Id=1, Category=1, Text="Hello World!"};
myClass B = new myClass { Id=2, Category=2, Text="Hello World!"};
myClass C = new myClass { Id=3, Category=2, Text="Good Bye!"};
myList.AddRange(new []{ A, B, C });
Run Code Online (Sandbox Code Playgroud)

我应该有对象AB我的子列表

Mar*_*ell 5

也许不理想,但也许:

var result = myList.GroupBy(x=>x.Text).Where(grp => grp.Count() > 1)
            .SelectMany(x=>x); // .ToList() if you want a list
Run Code Online (Sandbox Code Playgroud)

或者在查询语法中:

var result = from x in myList
             group x by x.Text into grp
             where grp.Count() > 1
             from y in grp
             select y; // .ToList() if you want a list
Run Code Online (Sandbox Code Playgroud)