【发布时间】:2019-05-30 03:34:57
【问题描述】:
我有两个不同类型的自定义对象列表,我正在尝试执行内部连接,其中连接条件包含在对象的子列表中。
这是我的对象的一个示例:
public class Container
{
public List<Reference> Refs;
public Container(List<Reference> refs )
{
Refs = refs;
}
}
public class Reference
{
public int Id;
public Reference(int id )
{
Id = id;
}
}
这是我正在使用的数据的示例:
List<Container> containers = new List<Container>()
{
new Container(new List<Reference>()
{
new Reference(1),
new Reference(2),
new Reference(3)
}),
new Container(new List<Reference>()
{
new Reference(4),
new Reference(5),
new Reference(6)
})
};
List<Reference> references = new List<Reference>()
{
new Reference(4),
new Reference(5),
new Reference(6)
};
我正在尝试根据Reference.Id 在List<Reference> 中选择List<Container> 中具有匹配Reference 的所有Containers。有了这些数据,我希望只选择List<Container> 中的第二项。
如果它是有效的语法,我会按照以下方式做一些事情:
var query = from c in containers
join r in references on c.Refs.Contains( r.Id )
select c;
如何做到这一点?谢谢
抱歉标题不好。我正在努力将这种情况放在一小段文字中 - 如果您能想到更合适的内容,请提出修改建议。谢谢
【问题讨论】:
-
我可能会建议使用实现 iequatable 的 list
的继承类...然后您可以使用序列等于检查给定的 list 是否与您的列表匹配...请参阅此详情 - docs.microsoft.com/en-us/dotnet/api/…