
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# – 如何动态检查语句所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)