gpt4 book ai didi

c# - Linq 中的字符(字符串)编码数字与数字比较

转载 作者:行者123 更新时间:2023-11-30 22:34:33 27 4
gpt4 key购买 nike

我有这个问题。

  levelnumber = (from b in bv.baLevels
where b.ba_Level_Code == ("0" + SqlFunctions.StringConvert((double)cl.Level_Num.Value)) && b.isActive == 1
select (b.ba_Level_Code + " - " + b.ba_Level_Desc)).FirstOrDefault(),

我的问题是 b.ba_Level_Code 是字符串。

cl.Level_Num 是 Int。

baLevels 表我有这个 ba_Level_code 值有 008

但是cl是BaCodeLibrary表这个cl.Level_Num有8个

如果我使用硬编码值进行查询

 levelnumber = (from b in bv.baLevels
where b.ba_Level_Code == "008" && b.isActive == 1
select (b.ba_Level_Code + " - " + b.ba_Level_Desc)).FirstOrDefault(),

如何显示008?我得到的 cl.Level_Num 是 8。我需要将该值更改为 008。

谢谢

最佳答案

我在 LINQ to Enties 中找不到执行此操作的好方法。假设您不能修改 ba_Level_Code 列的数据类型,我认为您最好的选择是添加一个持久化的 computed column。到该表,为其编制索引,并在您的查询中使用该列。

例如,如果你定义了一列

ba_Level_Code_Int as (case when isnumeric(ba_Level_Code)= 1 then cast(ba_Level_Code as int) end) persisted

那么您的 LINQ 查询可能是

levelnumber = (from b in bv.baLevels   
where b.ba_Level_Code_Int == cl.Level_Num.Value && b.isActive == 1
select (b.ba_Level_Code + " - " + b.ba_Level_Desc)).FirstOrDefault();

关于c# - Linq 中的字符(字符串)编码数字与数字比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7781871/

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