我有以下清单.
一个包含Person对象的列表具有Id&Name属性.People对象的其他列表具有Id,Name和Address属性.
List<Person> p1 = new List<Person>();
p1.Add(new Person() { Id = 1, Name = "a" });
p1.Add(new Person() { Id = 2, Name = "b" });
p1.Add(new Person() { Id = 3, Name = "c" });
p1.Add(new Person() { Id = 4, Name = "d" });
List<People> p2 = new List<People>();
p2.Add(new People() { Id = 1, Name = "a", Address=100 });
p2.Add(new People() { Id = 3, Name = "x", Address=101 });
p2.Add(new People() { Id = 4, Name = "y", Address=102 });
p2.Add(new People() { Id = 8, Name = "z", Address=103 });
Run Code Online (Sandbox Code Playgroud)
想要过滤列表,所以我使用下面的代码.但代码返回ID列表.我希望List of People对象具有匹配的ID.
var filteredList = p2.Select(y => y.Id).Intersect(p1.Select(z => z.Id));
Run Code Online (Sandbox Code Playgroud)
你最好的 Join
var filteredList = p2.Join(p1,
people => people.Id,
person => person.Id,
(people, _) => people)
.ToList();
Run Code Online (Sandbox Code Playgroud)
该方法将通过您所提供的密钥相匹配,从两份名单的项目- Id中的People类Id的Person类.对于people.Id == person.Id应用选择器功能的每一对(people, _) => people.函数说对于每对匹配people并person只给我people实例; 我不在乎person.
| 归档时间: |
|
| 查看次数: |
828 次 |
| 最近记录: |