gpt4 book ai didi

database - 多行的Linq查询条件

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:38 24 4
gpt4 key购买 nike

我试图解决过去 2 天的一个查询,但没有成功。看起来很容易理解,但做不到。

例如表中有两列:

ResourceId  ||   MappingId

1 2
1 3
2 2
2 4
3 2
3 4
4 2
4 5
5 2
5 4

这是一张表,有两个字段 ResourceId 和 MappingId。现在我想要具有 Mappingid {2,4}

的 resourceId

意味着答案必须是 ResourceId {2,3,5}

我怎样才能在 Linq 查询中得到这个答案?

最佳答案

使用集合的Contains。这个方法可以被 Entity Framework 翻译成 SQL IN 运算符:

int[] mappingIds = { 2, 4 };
var resources = from t in table
where mappingIds.Contains(t.MappingId)
select t.ResourceId;

Lambda 语法:

var  resources = table.Where(t => mappingIds.Contains(t.MappingId))
.Select(t => t.ResourceId);

生成的 SQL 看起来像:

SELECT [Extent1].[ResourceId]
FROM [dbo].[TableName] AS [Extent1]
WHERE [Extent1].[MappingId] IN (2,4)

更新:如果你想获得具有所有提供的映射 ID 的资源,那么

var resources = from t in table
group t by t.ResourceId into g
where mappingIds.All(id => g.Any(t => t.Id == id))
select g.Key;

Entity Framework 能够将这个查询翻译成 SQL,但它不会像上面的查询那么漂亮。

关于database - 多行的Linq查询条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22354014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com