gpt4 book ai didi

.net - 使用 Linq 2 EF,我如何找到以 'x' 开头的 guid?

转载 作者:行者123 更新时间:2023-11-30 23:50:13 24 4
gpt4 key购买 nike

使用 Linq2Entities (EF4),我需要查询具有 Guid 的实体属性(称之为 id )。我需要查询我的实体是否有任何记录 id s 以给定的前缀开头。

本质上,我需要类似的东西

from items in myEntity 
where items.id.ToString().StartsWith(prefix)
// rest of the query

现在,我知道 L2EF 不支持 Guid 的转换成员(member)使用 ToString() .
SqlFunctions.StringConvert() helper 也不支持它,因为它不接受 Guid争论。

而且我不能使用 SQL 的 LIKE ,如
from items in myEntity 
where items.id like 'prefix%'

因为 L2EF 也不支持它。

到目前为止,我发现的所有建议都建议使用 Contains() ,但这与 starts with 完全不同....在 Guid的情况下s,例如,前 8 个字符可能出现在最后 13 个字符中。

那么,您将如何使用 L2EF 查询具有以“前缀”开头的 Guid 的记录?

我可以想到一些技巧,比如转换 uniqueidentifier后端 SQL 数据库上的字段为 varchar() ,但我真的很想了解在诉诸类似的事情之前我是否只是做错了。

最佳答案

两种选择:
1) 更改您的实体数据模型,以便无论“x”表示什么,它都会移动到该实体的属性中,而不是与唯一 id 紧密耦合

2) 将整个实体列表放入一个集合中,然后将它们加载到内存中后,对集合执行 id.ToString().Contains() 查询。一旦它被加载到内存中,CLR 将允许这样做。虽然,可怕的开销。

如果可能的话,我会选择#1。

关于.net - 使用 Linq 2 EF,我如何找到以 'x' 开头的 guid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5862563/

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