下面是我的示例物件串列。
Person1: Id=1, Name="Test1", Lastname="Test1", Age=13
Person2: Id=2, Name="Test2", Lastname="Test2", Age=14
Person3: Id=3, Name="Test1", Lastname="Test1", Age=15
Person4: Id=4, Name="Test4", Lastname="Test4", Age=16
我想通過查詢名稱和姓氏從串列中獲取副本。
我的新串列應該是 Person1 和 Person3。
Person1: Id=1, Name="Test1", Lastname="Test1", Age=13
Person3: Id=3, Name="Test1", Lastname="Test1", Age=15
如何使用 LINQ 實作這一目標?
uj5u.com熱心網友回復:
您可以groupBy通過多個屬性,Name and Lastname. 并將Where結果應用到Count>1,展開groupswithSelectMany并將其轉換回List.
public static void Main(string[] args)
{
var persons = new List<Person>
{
new Person{ Id=1, Name="Test1", Lastname="Test1", Age=13 },
new Person{ Id=2, Name="Test2", Lastname="Test2", Age=14 },
new Person{ Id=3, Name="Test1", Lastname="Test1", Age=15 },
new Person{ Id=4, Name="Test4", Lastname="Test4", Age=16 }
};
List<Person> filteredPersons = persons
.GroupBy(d => new { d.Name, d.Lastname })
.Where(g => g.Count() > 1)
.SelectMany(g => g.ToList())
.ToList();
filteredPersons.ForEach(x => Console.WriteLine($"{x.Id}: {x.Name} {x.Lastname} {x.Age}"));
}
輸出將是
1: Test1 Test1 13
3: Test1 Test1 15
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510629.html
標籤:C#列表林克c#-4.0
