起初你可能会认为这是这个问题的重复,但希望你会发现它不是。
我还想选择连续的行组,但考虑到这次的条目是电话号码,因此存储为字符串。
我一直在尝试这样的想法:
var numbers = await (from a in context.Telephones
from b in context.Telephones
Convert.ToInt32(a.Number) < Convert.ToInt32(b.Number) &&
Convert.ToInt32(b.Number) < (Convert.ToInt32(a.Number) + numberQuantity)
group b by new { a.Number }
into myGroup
where myGroup.Count() + 1 == numberQuantity
select myGroup.Key.Number).ToListAsync();
但这失败了:
LINQ to 实体无法识别方法'Int32 ToInt32(System.String)'
方法,并且此方法无法转换为存储表达式。
我知道 LINQ to Entities 不支持Convert.ToInt32
但我在这里没有想法来使其工作。
因此,如果我的数据库有:
2063717608
2063717609
2063717610
2063717611
2063717613
2063717614
如何根据字符串值选择连续行?当查询 3 个连续数字时,得到如下结果:
- 从2063717608到2063717610
- 从2063717609到2063717611
1- 如果您知道调用AsEnumerable()
转换查询并在内存中对检索到的实体进行转换的性能副作用。
2-如果您不想要解决方案#1,则必须寻找解决转换问题的方法:
2-1-将数据库中的列类型更改为 int
2-2- 或者选择其他开发人员先前提出的解决方案之一,例如:
在 Linq 中将 int 转换为字符串到实体时出现问题