public TEntity GetSingle(string property, object value) { var expression = Lambda.Equal <TEntity>(property, value); var find = GetSingle(expression); return(find); }
public TEntity GetSingle(string property, object value) { // var dynamicWhere = LinqHelper.GetExpression<TEntity, bool>($"entity.{property} == MongoDB.Bson.ObjectId.Parse(\"{value}\")", "entity"); var expression = Lambda.Equal <TEntity>(property, value); var find = GetSingle(expression); return(find); }
public void TestEqual() { Expression <Func <Sample, bool> > expected = t => t.IntValue == 1; Assert.Equal(expected.ToString(), Lambda.Equal <Sample>("IntValue", 1).ToString()); Expression <Func <Sample, bool> > expected2 = t => t.Test2.IntValue == 1; Assert.Equal(expected2.ToString(), Lambda.Equal <Sample>("Test2.IntValue", 1).ToString()); }
public void TestEqual() { //一级属性 Expression <Func <Test1, bool> > expected = t => t.Age == 1; Assert.AreEqual(expected.ToString(), Lambda.Equal <Test1>("Age", 1).ToString()); //二级属性 Expression <Func <Test1, bool> > expected2 = t => t.A.Integer == 1; Assert.AreEqual(expected2.ToString(), Lambda.Equal <Test1>("A.Integer", 1).ToString()); }
/// <summary> /// 查询表达式,ID的查询 /// </summary> protected virtual Expression <Func <TEntity, bool> > IdPredicate(object id) { return(Lambda.Equal <TEntity>("Id", id)); }
public TEntity GetSingleByIdNoTracking(TKey id) { var expression = Lambda.Equal <TEntity>("Id", id); return(FindAsNoTracking().Where(expression).FirstOrDefault()); }
/// <summary> /// 构建表达式树 /// 调用:GenerateExpression(new string[]{"username"},new object[]{"zzl"},new string[]{"="}); /// </summary> /// <typeparam name="T">表类型</typeparam> /// <param name="keys">字段名</param> /// <param name="values">字段值</param> /// <param name="operation">操作符</param> /// <returns></returns> public static Expression <Func <T, bool> > GenerateExpression <T>(List <FieldValueParam> listParam) { Expression <Func <T, bool> > expression_return = t => true; try { if (listParam.Count > 0) { foreach (var item in listParam) { switch (item.operation) { // 等于 case "=": expression_return = expression_return.And(Lambda.Equal <T>(item.name, item.value)); break; // 大于 case ">": expression_return = expression_return.And(Lambda.Greater <T>(item.name, item.value)); break; // 大于等于 case ">=": expression_return = expression_return.And(Lambda.GreaterEqual <T>(item.name, item.value)); break; // 小于 case "<": expression_return = expression_return.And(Lambda.Less <T>(item.name, item.value)); break; // 小于等于 case "<=": expression_return = expression_return.And(Lambda.LessEqual <T>(item.name, item.value)); break; // 包含 case "%": expression_return = expression_return.And(Lambda.Contains <T>(item.name, item.value)); break; // 包含于 case "in": string[] arrStr = item.value.ToString().Split(','); Expression <Func <T, bool> > or_return = t => false; if (arrStr.Length > 0) { foreach (var arr in arrStr) { or_return = or_return.Or(Lambda.Contains <T>(item.name, arr)); } } expression_return = expression_return.And(or_return); break; // 不等于 case "!=": expression_return = expression_return.And(Lambda.NotEqual <T>(item.name, item.value)); break; default: throw new ArgumentException("无效的操作符,目前只支持=,%,>,<,>=,<=,in"); } } } } catch (Exception ex) { throw ex; } return(expression_return); }