拼接拉姆达会使WhereIF条件失效 返回

求助
8 87
该叫什么 发布于6天前
悬赏:5 飞吻

拼接拉姆达会使WhereIF条件失效

.whereIF(a=1&&b=2,it=>test())

不符合条件一样会执行test方法

热忱回答8

  • 写出完整示例代码

    0 回复
  • .whereIF(a=1&&b=2,text()) 这样才是对的  


     

    0 回复
  • 还有 应是== 不是 = 

    0 回复
  • 眄 VIP0
    6天前

    .WhereIF(st.Identity == 1, Universal.SalesRouteExpression(st.SalesRoute))

    并没有符合条件,但还是调用了方法,方法中是兰姆达拼接

    0 回复
  • 眄 VIP0
    6天前

    DA0963F9-4D2B-4863-95C1-36DCACC2D30D.png

    0 回复
  • var y= st.Identity == 1 ;

    y是什么值 ,这个功能不会有问题

    0 回复
  • 如果还有问题写个控制台小DEMO发出来

    0 回复
  • 眄 VIP0
    6天前

    using SqlSugar;

    using System;

    using System.Collections.Generic;

    using System.Linq.Expressions;


    namespace SqlSugarTest

    {

        class Program

        {

            /// <summary>

            /// 查询所有

            /// </summary>

            /// <returns></returns>

            private static SqlSugarClient GetInstance()

            {

                //创建数据库对象

                SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()

                {

                    ConnectionString = "server=192.168.8.225;database=test;uid=sa;pwd=123;",//连接符字串

                    DbType = DbType.SqlServer,

                    IsAutoCloseConnection = true,

                    InitKeyType = InitKeyType.Attribute//从特性读取主键自增信息

                });

                return db;

            }

            /// <summary>

            /// 拼接拉姆达

            /// </summary>

            /// <returns></returns>

            public static Expression<Func<CodeFirstTable1, bool>> SalesRouteExpression(List<string> SalesRoute)

            {

                var exp = Expressionable.Create<CodeFirstTable1>();


                foreach (var item in SalesRoute)

                {

                    exp.Or(s => s.Name.Contains(item));

                }


                return exp.ToExpression();

            }

            static void Main(string[] args)

            {

                var db = GetInstance();


                // 建表

                db.CodeFirst.InitTables(typeof(CodeFirstTable1));


                // 测试

                int st = 0;


                List<string> test = new List<string>() {

                    "测试",

                    "测试1"

                };


                // st不符合条件,SalesRouteExpression方法一样会被调用

                var list = db.Queryable<CodeFirstTable1>().WhereIF(st == 1, SalesRouteExpression(test)).ToList();


                Console.WriteLine("Hello World!");

            }

            public class CodeFirstTable1

            {


                [SugarColumn(IsIdentity = true, IsPrimaryKey = true)]

                public int Id { get; set; }

                public string Name { get; set; }

                [SugarColumn(ColumnDataType = "Nvarchar(255)")]

                public string Text { get; set; }

                [SugarColumn(IsNullable = true)]

                public DateTime CreateTime { get; set; }

            }

        }

    }



    0 回复

版块

学习文档

最新会员

发布达人

回贴达人