ue.id).ToAr-6ren">
gpt4 book ai didi

c# - 在 LINQ to SQL 中选择 "IN"

转载 作者:行者123 更新时间:2023-11-30 12:35:28 25 4
gpt4 key购买 nike

我得到了一个要更新的实体列表,并且我有它们的 ID。我想从数据库中获取原始的,所以我这样做:

String[] ids = updatedEvents.Select(ue => ue.id).ToArray();

var originalEventsToUpdate = Db.tbl_ffk_event
.Where(e => ids.Contains(e.id))
.ToArray();

但是我使用日志得到的是这个生成的 SQL:

SELECT [t0].[id], [t0].[fs_mapping_id], [t0].[fs_id_value], [t0].[desc]
FROM [dbo].[tbl_ffk_event] AS [t0]
WHERE 0 = 1
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.0.30319.1

那个 SQL 的意思是“获取整个表”。

如何生成这样的“IN”:

SELECT [t0].[id], [t0].[fs_mapping_id], [t0].[fs_id_value], [t0].[desc]
FROM [dbo].[tbl_ffk_event] AS [t0]
WHERE [t0].[id] IN ('aaa','bbb','ccc','ddd','eee',)

提前致谢。

编辑:

我觉得很傻,我没有看到WHERE 0 = 1。这是因为此时 ids 集合中没有任何内容。我现在已经检查确保有项目,并且正确生成了 SQL。对不起。

最佳答案

实际上,由于 WHERE 0 = 1 子句,此 SQL 将返回一个空记录集(即根据模式正确映射,但没有行)。

您提供的代码似乎是正确的,但某些东西使查询提供者确信永远不会有匹配的行。

假设这不正确,我将查看 id 属性的列映射。是否与数据库正确匹配?

关于c# - 在 LINQ to SQL 中选择 "IN",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5458022/

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