拼接拉姆达会使WhereIF条件失效 返回
拼接拉姆达会使WhereIF条件失效
.whereIF(a=1&&b=2,it=>test())
不符合条件一样会执行test方法
热忱回答(8)
-
fate stay night VIP0
2020/10/13写出完整示例代码
0 回复 -
fate stay night VIP0
2020/10/13.whereIF(a=1&&b=2,text()) 这样才是对的
0 回复 -
fate stay night VIP0
2020/10/13还有 应是== 不是 =
0 回复 -
眄 VIP0
2020/10/13.WhereIF(st.Identity == 1, Universal.SalesRouteExpression(st.SalesRoute))
并没有符合条件,但还是调用了方法,方法中是兰姆达拼接
0 回复 -
眄 VIP0
2020/10/13
0 回复 -
fate stay night VIP0
2020/10/13var y= st.Identity == 1 ;
y是什么值 ,这个功能不会有问题
0 回复 -
fate stay night VIP0
2020/10/13如果还有问题写个控制台小DEMO发出来
0 回复 -
眄 VIP0
2020/10/14using 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 回复