【问题标题】:LEFT AND RIGHT function lambda expression c#LEFT AND RIGHT 函数 lambda 表达式 c#
【发布时间】:2021-03-26 05:57:10
【问题描述】:

我该如何使用 c#中的左右函数lambda表达式? 例如:

"SELECT [Code]   FROM [City]  WHERE LEFT ([Code] ,3)=" + Digit + " LEFT AND RIGHT function in ([Code],6)<>111111 order by Code"

你能帮我把上面的代码转换成c#中的lambda表达式吗

【问题讨论】:

  • String.StartsWith 或 .EndsWith 有帮助吗?
  • 感谢上面代码的解释
  • 代码是一个数字

标签: c# linq lambda


【解决方案1】:

根据您的示例,假设您尝试使用 lambda 格式化字符串。如果我误解了您要达到的目标,请告诉我。

Func<int, string> myFunc = d => $"SELECT [Code]   FROM [City]  WHERE LEFT ([Code] ,3)={d} LEFT AND RIGHT function in ([Code],6)<>111111 order by Code";

【讨论】:

  • _db.City.Select(c=> (DbFunctions.Left(c.Id.ToString(),2)== StartDigit.ToString()) && (DbFunctions.Right(c.Id. ToString(),5)"00000")).Tolist();
  • 嗨@tablighjonoub。介意告诉我你有什么问题吗?并请提供有关该问题的更多信息。就像答案结果没有按预期产生一样。
  • 你的代码看起来像是选择了一个布尔列表。我不明白_db_db.City 的数据类型是什么。我假设_db.CityListIEnumerable
  • 现在对我来说有点清楚了。似乎_db.City.Select 下的代码是要求。在GetAllCityCustom 中,应该返回List&lt;bool&gt; 而不是List&lt;City&gt;。请改用_db.City.Where
【解决方案2】:
public class CityCustomRepository:GenericCrudRepository<City>
    {
        private ShopEntities _db;
        public CityCustomRepository(ShopEntities db) : base(db)
        {
            _db = db;
        }

        public List<City> GetAllCityCustom(int StartDigit)
        {
            return _db.City.Where(c=> DbFunctions.Left(c.Id.ToString(), 2) == StartDigit.ToString() && DbFunctions.Right(c.Id.ToString(), 5) <> "00000").ToList();
           
        }
    }
  1. 要选择第一个城市,我选择省份

2- 省代码 30

3- 取省代码

4- 城市代码为7位

2位城市代码左隔开,与2位省级代码比较

然后,城市代码右边的5位数字将被分开,这次它必须与00,000相反

【讨论】:

    【解决方案3】:

    我找到了答案

    public List<City> GetAllCity(object StartDigit)
            {
                try
                {
                    return _db.City.Where(c => c.Id.ToString().StartsWith(StartDigit.ToString()) && !c.Id.ToString().EndsWith("00000")).ToList();
                }
                catch
                {
                    return null;
                }
                
            }
    

    只需将数据类型的类型视为对象

    GetAllCityCustom(int StartDigit)

    并使用以下命令

    c => c.Id.ToString().StartsWith(StartDigit.ToString()) && !c.Id.ToString().EndsWith("00000")

    感谢各位朋友的指点

    【讨论】:

      猜你喜欢
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      相关资源
      最近更新 更多