gpt4 book ai didi

c# - 在 Linq to Entities 中获取字符值

转载 作者:行者123 更新时间:2023-11-30 16:13:21 25 4
gpt4 key购买 nike

我有一个表 Assessment,其中有两列,CurrentGradePreviousGrade,它们都定义为 字符(1)。等级是从 A 到 Z 的符号。

现在我想写一个查询来获取Assessment中所有记录的当前成绩和之前成绩之间的差异,以数字表示,例如如果前一个是A,当前是D,那么差就是3。

我会做这样的事情:

var q = db.Assessments.Select(a => new { a.ID, Diff = a.CurrentGrade[0] - a.PreviousGrade[0] });

...除了这行不通,因为 String.getChars 没有 SQL 转换。

而且我不想在本地内存中执行此操作,因为在我的实际代码中,这只是一个大的“where”子句的一部分,该子句涉及必须在 Linq to Entities 中完成的其他表达式。

有什么建议如何做到这一点?

最佳答案

Linq-To-Entities中,您可以使用SqlFunctions.Ascii:

using System.Data.Objects.SqlClient;

var result = db.Assessments.Select(a => new { a.id,
Diff = SqlFunctions.Ascii(a.CurrentGrade).Value - SqlFunctions.Ascii(a.PreviousGrade).Value });

请注意,如果 CurrentGrade (A) 高于 PreviousGrade (D),您将得到 -3 的答案,即与您可能想要的相反...所以您可能想乘以-1以获得坡度差异的真实方向。

var result = db.Assessments.Select(a => new { a.id, 
Diff = (SqlFunctions.Ascii(a.CurrentGrade).Value - SqlFunctions.Ascii(a.PreviousGrade).Value) * -1 });

关于c# - 在 Linq to Entities 中获取字符值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21813068/

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