C# 过滤列表<;目标1>;使用另一个列表<;目标2>;
很抱歉发布这个愚蠢的问题,但我确实需要你的帮助 我有两个c#格式的列表。让我们把它们称为C# 过滤列表<;目标1>;使用另一个列表<;目标2>;,c#,linq,C#,Linq,很抱歉发布这个愚蠢的问题,但我确实需要你的帮助 我有两个c#格式的列表。让我们把它们称为list listObjet1和list listObjet2 问题是:我想根据objet2和objet1中的一些匹配值,以某种方式过滤list public class Objet1 { public int Id { get; set; } public string Libelle { get; set; } public string IdObjet2 { get; se
list listObjet1
和list listObjet2
问题是:我想根据objet2
和objet1
中的一些匹配值,以某种方式过滤list
public class Objet1
{
public int Id { get; set; }
public string Libelle { get; set; }
public string IdObjet2 { get; set; }
}
public class Objet2
{
public int Id { get; set; }
public string Libelle { get; set; }
public string IdTrain { get; set; }
}
我渴望有一个列表
,其中Objet2.Id
等于Objet1.Id
,我尝试了以下Linq
List<Objet1> listObjet1= (listObjet1.Select(p => p.id).Contains(listObjet2.Select(q=>q.idObjet1)))toList();
List<Objet1> listObjet1= (listObjet1.Select(p => p.id).Equal(listObjet2.Select(q=>q.idObjet1))).toList();
List listObjet1=(listObjet1.Select(p=>p.id).Contains(listObjet2.Select(q=>q.idObjet1)))toList();
List listObjet1=(listObjet1.Select(p=>p.id).Equal(listObjet2.Select(q=>q.idObjet1)).toList();
或者Equal()
它只能返回一些我不需要的列表,比如List代码>
我需要的只是一个列表
您正在寻找一个简单的加入
:
var result = listObjet1.Join(listObjet2, o1 => o1.Id, o2 => o2.Id, (o1, o2) => o1).ToList();
听起来你想找到相交的结果?如果是这样,您可以使用Linq扩展方法Intersects
-您可以使用自定义相等比较器-您的意思是listObject1包含ID包含在listObject2的ID列表中的对象吗?我在这里给出了类似问题的答案,谢谢大家;我使用了@Dominic Kexel的解决方案谢谢,这正是我想要的