当前位置: 首页 > 编程语言 > C#

C#中是否可以使用linq压缩if语句?

时间:2023-04-10 21:59:27 C#

我可以在C#中使用linq压缩if语句吗?在sql中,如果MY_STATE位于(1,2,3,4),我可以创建如下所示的if语句在C#中,我必须输入=STATE.VA||MY_STATE==STATE.RI)这显然更麻烦。我可以使用LINQ来模仿sql的“in”语句吗?我正在寻找类似if(MY_STATEin(STATE.CT,STATE.MA,STATE.VA,STATE.RI))if(new[]{State.CT,State.MA,State.VA,State.RI}.Contains(myState)){//好了}你可以使用扩展方法:comparer.Equals(t))返回真;返回假;}}并像这样使用它:if(myState.EqualsAny(State.CT,State.MA,State.VA,State.RI)){//...}你想使用Contains,它映射到SQLIN。我假设State是一个枚举并存储为整数。varstates=newint[]{(int)State.CT,(int)State.MA,(int)State.VA,(int)State.RI};varquery=db.States.Where(s=>states.Contains(s.State));在C++中,我会使用switch语句。switch(MY_STATE){caseSTATE.CT:case.STATE.MA:case.STATE.VA:case.STATE.RI:....break;只是从记忆中记下来的。所以你可能会纠正一些语法问题。你可以这样做:enumMyEnum{A,B,C,D}//...MyEnume=MyEnum.A;if(new[]{MyEnum.A,MyEnum.B}.Contains(e))控制台。WriteLine("是啊!");您可以编写自己的扩展方法来执行此操作:staticboolIsOneOf(thisTvalue,paramsT[]set){returnset.Contains(value);}Usage:MY_STATE.IsOneOf(STATE_A,STATE_B,STATE_C)(但是运行时比较慢,要创建一个临时数组,还要计算IsOneOf的所有参数)以上是C#学习教程:CanIuselinq在C#中压缩if语句?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: