实体框架一对多查询

3

一对多关系

我有这个模型。

规则。

一个公司可以拥有多个服务

问题

用户可以输入服务名称列表(字符串列表),然后检索具有该服务列表的公司。

问题

我该如何做到这一点?我脑海中首先想到的解决方案是先连接表,然后从连接表中使用 lambda 表达式。还有其他的解决方案吗?


1
你能提供一些你尝试过的代码示例以及未成功的部分吗? - Jeff Siver
公司是根据服务名称检索的,我的意思是所有服务都需要匹配条件还是用户输入的一个服务匹配条件? - Ankush Madankar
@AnkushMadankar 你是什么意思?这是一个案例的示例。如果我输入“Transportation”和“Electrical”,输入将转换为包含这两个单词的字符串列表,然后系统将执行查询。 - donthurtme
@donthurtme 然后请按照下面的 Andrey Molotkov 的回答 进行操作! - Ankush Madankar
你能否直接查询服务表并获取公司名称?Service.where(s => s.Service_Name == "myservice") - Anshul Nigam
目前我使用全连接作为我的解决方案。 - donthurtme
1个回答

2
你可以使用 Where() 来实现:
Companies.Where(c => requiredServices.All(s => c.Services.Contains(s)))

如果使用List<string>,那么:
Companies.Where(company => serviceNames.All(
    serviceName => company.Services.Any(service => service.Service_Name == serviceName)))

如果requiredServices是服务列表,那么这是可以完成的。我的问题是输入实际上只是名称(字符串类型)。有什么想法吗? - donthurtme
@donthurtme 你可以假设 requiredServices 类型为 List<string>。(同样适用于 c.services)。明白了吗? - Zeeshan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接