c# – 如何动态检查语句

c# – 如何动态检查语句,第1张

概述我的问题如下,我需要通过数据库检查条件.这意味着在简单的应用程序中我们检查这样的条件. private static void Main(string[] args){ Console.WriteLine("Enter your age"); var age = int.Parse(Console.ReadLine() ?? throw new InvalidOperationE 我的问题如下,我需要通过数据库检查条件.这意味着在简单的应用程序中我们检查这样的条件.
private static voID Main(string[] args){    Console.Writeline("Enter your age");    var age = int.Parse(Console.Readline() ?? throw new InvalIDOperationException());    if (5 <= age && age <= 10)    {        Console.Writeline("Range 5 - 10");    }else if (11 <= age && age <= 20)    {        Console.Writeline("Range 11 - 20");    }    else if (21 <= age && age <= 30)    {        Console.Writeline("Range 21 - 30");    }    else    {        Console.Writeline("Over range");    }}

假设客户端需要动态更改条件,这意味着他需要向系统添加附加条件,如:

如果31 <=年龄&&年龄< = 40 =>范围31 – 40

在客户端执行此 *** 作时,有时会向系统添加错误的条件,例如:

(4< = age&& age< = 15)这个条件不能加,因为系统已经有条件(5 <= age&& age< = 10).年龄为7岁时,两种情况都是正确的.喜欢这种类型的情况,最好的事情是什么. 我需要在我的数据库中存储条件,(PS:数据库表结构可以根据你的答案改变) 作为样本表结构

ConditionID    Condition                  Detailscon001         5 <= age && age <= 10      Range 5 - 10con002         11 <= age && age <= 20     Range 11 - 20con003         21 <= age && age <= 30     Range 21 - 30

请给我一个解决方案来解决这个问题.如何使用C#和oracle sql执行此 *** 作

解决方法 首先,您不需要将详细信息存储为列,因为您可以稍后在代码中以动态方式构建它.其次,您不需要将Condition存储为字符串列,因为当您想要将其解析为C#代码中的条件时,它会使您的工作更加复杂.您只需要在数据库中存储两个整数值作为范围的Lower和Upper值,并生成ConditionID标识.你的桌子应该是这样的:
CREATE table [dbo].[tblConditions] ([ConditionID] INT IDENTITY (1,1) NOT NulL,[Lower]       INT NOT NulL,[Upper]       INT NOT NulL,PRIMARY KEY CLUSTERED ([ConditionID] ASC));

然后你可以在你的代码中写这样的东西:

Console.Writeline(@"Enter your age");var age = int.Parse(Console.Readline() ?? throw new InvalIDOperationException());using (var db = new forTestEntitIEs()){    var result = db.tblConditions.Where(c => c.Lower <= age && age <= c.Upper).AsEnumerable()        .Select(c => $"Range {c.Lower} - {c.Upper}")        .DefaultIfEmpty("Over range").SingleOrDefault();    Console.Writeline(result);}

编辑:如果您不熟悉这个$运算符,它被称为String Interpolation并且它在C#6中可用,如果您使用的是旧版本的C#,您可以使用string.Format,如下所示:

c => string.Format("Range {0} - {1}",c.Lower,c.Upper)

另外,要向数据库添加动态条件,可以使用以下代码:

Console.Writeline(@"Enter Lower");var lower = int.Parse(Console.Readline() ?? throw new InvalIDOperationException());Console.Writeline(@"Enter Upper");var upper = int.Parse(Console.Readline() ?? throw new InvalIDOperationException());using (var db = new forTestEntitIEs()){    var newCondition = new tblCondition    {        Lower = lower,Upper = upper    };    var range = Enumerable.Range(newCondition.Lower,newCondition.Upper - newCondition.Lower + 1);    var check = db.tblConditions.AsEnumerable().Any(c => range                .Intersect(Enumerable.Range(c.Lower,c.Upper - c.Lower + 1)).Any());    if (!check)    {        db.tblConditions.Add(newCondition);        db.SaveChanges();    }}

请注意:我使用过sql Server和Entity Framework-DB First方法,您可以根据自己的要求进行更改.

总结

以上是内存溢出为你收集整理的c# – 如何动态检查语句全部内容,希望文章能够帮你解决c# – 如何动态检查语句所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1247306.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存