222
schangxiang@126.com
2025-05-18 4967c641bf731d3fd230cdcb84420f6837a1b7f2
Weben_CMSרÓôúÂëÉú³ÉÆ÷/queryExtensions/CmsQueryExtensions/Extension/DynamicSearchParameters/WhereConditionsExtensions.cs
@@ -52,7 +52,9 @@
                            try
                            {
                                var new_conditions = PredicateExtensions.GetConditionExpressionForFuzzyQuery<T>(pro_value_searchFormInputAttrs.ToArray(), pro_value_searchVal);
                                conditions = conditions.And(new_conditions);
                                //And改为AndAlso,解决mysql å¤„理And会出错的问题(??And?? é€šå¸¸å¯¹åº” ??按位与 (&)??,不会短路求值,可能导致 SQL ç”Ÿæˆ NOT (NOT (...)) è¿™æ ·çš„冗余逻辑,??AndAlso?? å¯¹åº” ??逻辑与 (&&)??,会短路求值,生成的 SQL æ›´ç®€æ´é«˜æ•ˆã€‚) ã€Editby shaocx,2025-05-13】
                                //conditions = conditions.And(new_conditions);
                                conditions = conditions.Compose(new_conditions, Expression.AndAlso);
                            }
                            catch (Exception ex)
                            {
@@ -65,7 +67,9 @@
                        else if (i_pro_value_searchValMode == Convert.ToInt32(SearchFilterModeEnum.精准查询))
                        {//精准查询
                            var new_conditions = PredicateExtensions.GetConditionExpressionForPreciseQuery<T>(pro_value_searchFormInputAttrs.ToArray(), pro_value_searchVal);
                            conditions = conditions.And(new_conditions);
                            //And改为AndAlso,解决mysql å¤„理And会出错的问题(??And?? é€šå¸¸å¯¹åº” ??按位与 (&)??,不会短路求值,可能导致 SQL ç”Ÿæˆ NOT (NOT (...)) è¿™æ ·çš„冗余逻辑,??AndAlso?? å¯¹åº” ??逻辑与 (&&)??,会短路求值,生成的 SQL æ›´ç®€æ´é«˜æ•ˆã€‚) ã€Editby shaocx,2025-05-13】
                            //conditions = conditions.And(new_conditions);
                            conditions = conditions.Compose(new_conditions, Expression.AndAlso);
                            /*
                          pro_value_searchFormInputAttrs.ForEach(x =>
                          {
@@ -107,12 +111,14 @@
                if (hsmList.Count > 0)
                {
                    var high_conditions = PredicateExtensions.GetConditionExpressionForHighFieldByAnd<T>(hsmList);
                    conditions = conditions.And(high_conditions);
                    //And改为AndAlso,解决mysql å¤„理And会出错的问题(​​And​​ é€šå¸¸å¯¹åº” â€‹â€‹æŒ‰ä½ä¸Ž (&)​​,不会短路求值,可能导致 SQL ç”Ÿæˆ NOT (NOT (...)) è¿™æ ·çš„冗余逻辑,​​AndAlso​​ å¯¹åº” â€‹â€‹é€»è¾‘与 (&&)​​,会短路求值,生成的 SQL æ›´ç®€æ´é«˜æ•ˆã€‚) ã€Editby shaocx,2025-05-13】
                    conditions = conditions.Compose(high_conditions, Expression.AndAlso);
                }
                if (hsmForDatetimeList.Count > 0)
                {
                    var high_conditions = PredicateExtensions.GetConditionExpressionForHighFieldByAnd<T>(hsmForDatetimeList);
                    conditions = conditions.And(high_conditions);
                    var high_conditions_dt = PredicateExtensions.GetConditionExpressionForHighFieldByAnd<T>(hsmForDatetimeList);
                    //conditions = conditions.And(high_conditions_dt);
                    conditions = conditions.Compose(high_conditions_dt, Expression.AndAlso);
                }
                #endregion
@@ -155,11 +161,17 @@
                        {
                            continue;
                        }
                        List<string> arr_value = v as List<string>;
                        if (arr_value.Count < 2)
                        //判断字符串是否有,号
                        List<string> arr_value = new List<string>();
                        string str_arr_value = v as string;
                        if (string.IsNullOrEmpty(str_arr_value)) continue;
                        if (str_arr_value.IndexOf(',') > -1)
                        {
                            continue;
                            var arr = str_arr_value.Split(',');
                            if (arr.Length != 2) continue;
                            arr_value = arr.ToList();
                        }
                        //string[] arr_value = (string[])v;
                        //string[] arr_value = Convert.ToString(v).Split(',');
                        hsmForDatetimeList.Add(new HighSearchForDateTimeRangeModel()