mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-23 22:11:36 +08:00
Update where(tree)
This commit is contained in:
parent
8651e08dc9
commit
2c1c0033f5
@ -36,7 +36,68 @@ namespace OrmTest
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
var json = db.Context.Utilities.SerializeObject(conModels);
|
||||||
var list6 =db .Queryable<Order>().Where(conModels).ToList();
|
var list6 =db .Queryable<Order>().Where(conModels).ToList();
|
||||||
|
|
||||||
|
Demo2();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Demo2()
|
||||||
|
{
|
||||||
|
var db = NewUnitTest.Db;
|
||||||
|
List<IConditionalModel> conModels = new List<IConditionalModel>();
|
||||||
|
conModels.Add(new ConditionalTree()
|
||||||
|
{
|
||||||
|
ConditionalList = new List<KeyValuePair<WhereType, IConditionalModel>>()// (id=1 or id=2 and id=1)
|
||||||
|
{
|
||||||
|
//new KeyValuePair<WhereType, ConditionalModel>( WhereType.And ,new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "1" }),
|
||||||
|
new KeyValuePair<WhereType, IConditionalModel> (WhereType.Or,new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "2" }),
|
||||||
|
new KeyValuePair<WhereType, IConditionalModel> ( WhereType.And, new ConditionalTree(){
|
||||||
|
ConditionalList=new List<KeyValuePair<WhereType, IConditionalModel>>(){
|
||||||
|
new KeyValuePair<WhereType, IConditionalModel>(WhereType.And,new ConditionalModel(){
|
||||||
|
FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "1"
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.NoEqual, FieldValue = "1" });
|
||||||
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.IsNot, FieldValue = null });// id is not null
|
||||||
|
var json = db.Context.Utilities.SerializeObject(conModels);
|
||||||
|
var list6 = db.Queryable<Order>().Where(conModels).ToList();
|
||||||
|
|
||||||
|
Demo3();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static void Demo3()
|
||||||
|
{
|
||||||
|
var db = NewUnitTest.Db;
|
||||||
|
List<IConditionalModel> conModels = new List<IConditionalModel>();
|
||||||
|
conModels.Add(new ConditionalTree()
|
||||||
|
{
|
||||||
|
ConditionalList = new List<KeyValuePair<WhereType, IConditionalModel>>()// (id=1 or id=2 and id=1)
|
||||||
|
{
|
||||||
|
//new KeyValuePair<WhereType, ConditionalModel>( WhereType.And ,new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "1" }),
|
||||||
|
new KeyValuePair<WhereType, IConditionalModel> (WhereType.Or,new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "2" }),
|
||||||
|
new KeyValuePair<WhereType, IConditionalModel> ( WhereType.And, new ConditionalTree(){
|
||||||
|
ConditionalList=new List<KeyValuePair<WhereType, IConditionalModel>>(){
|
||||||
|
new KeyValuePair<WhereType, IConditionalModel>(WhereType.Or,new ConditionalModel(){
|
||||||
|
FieldName="ID", ConditionalType=ConditionalType.Equal, FieldValue="1"
|
||||||
|
}),
|
||||||
|
new KeyValuePair<WhereType, IConditionalModel>(WhereType.And,new ConditionalModel(){
|
||||||
|
FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "1"
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.NoEqual, FieldValue = "1" });
|
||||||
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.IsNot, FieldValue = null });// id is not null
|
||||||
|
var json = db.Context.Utilities.SerializeObject(conModels);
|
||||||
|
var list6 = db.Queryable<Order>().Where(conModels).ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -280,7 +280,7 @@ namespace SqlSugar
|
|||||||
List<IConditionalModel> conModels = new List<IConditionalModel>();
|
List<IConditionalModel> conModels = new List<IConditionalModel>();
|
||||||
conModels.Add(con.Value);
|
conModels.Add(con.Value);
|
||||||
var childSqlInfo = ConditionalModelToSql(conModels, 1000 * (1 + index) + models.IndexOf(item));
|
var childSqlInfo = ConditionalModelToSql(conModels, 1000 * (1 + index) + models.IndexOf(item));
|
||||||
if (!isFirst)
|
if (!isFirst && con.Value.FieldName != $"[value=sql{UtilConstants.ReplaceKey}]")
|
||||||
{
|
{
|
||||||
|
|
||||||
builder.AppendFormat(" {0} ", con.Key.ToString().ToUpper());
|
builder.AppendFormat(" {0} ", con.Key.ToString().ToUpper());
|
||||||
@ -301,17 +301,17 @@ namespace SqlSugar
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
var item = model as ConditionalTree;
|
var item = model as ConditionalTree;
|
||||||
BuilderTree(builder,item,ref indexTree, parameters);
|
BuilderTree(builder,item,ref indexTree, parameters, ref mainIndex);
|
||||||
}
|
}
|
||||||
mainIndex++;
|
mainIndex++;
|
||||||
}
|
}
|
||||||
return new KeyValuePair<string, SugarParameter[]>(builder.ToString(), parameters.ToArray());
|
return new KeyValuePair<string, SugarParameter[]>(builder.ToString(), parameters.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BuilderTree(StringBuilder builder,ConditionalTree item,ref int indexTree, List<SugarParameter> parameters)
|
private void BuilderTree(StringBuilder builder,ConditionalTree item,ref int indexTree, List<SugarParameter> parameters,ref int mainIndex)
|
||||||
{
|
{
|
||||||
var conditionals = ToConditionalCollections(item,ref indexTree, parameters);
|
var conditionals = ToConditionalCollections(item,ref indexTree, parameters);
|
||||||
var sqlobj = ConditionalModelToSql(new List<IConditionalModel> { conditionals }, 1);
|
var sqlobj = ConditionalModelToSql(new List<IConditionalModel> { conditionals }, mainIndex);
|
||||||
var sql = sqlobj.Key;
|
var sql = sqlobj.Key;
|
||||||
RepairReplicationParameters(ref sql, sqlobj.Value,indexTree);
|
RepairReplicationParameters(ref sql, sqlobj.Value,indexTree);
|
||||||
parameters.AddRange(sqlobj.Value);
|
parameters.AddRange(sqlobj.Value);
|
||||||
@ -323,6 +323,7 @@ namespace SqlSugar
|
|||||||
private ConditionalCollections ToConditionalCollections(ConditionalTree item,ref int indexTree, List<SugarParameter> parameters)
|
private ConditionalCollections ToConditionalCollections(ConditionalTree item,ref int indexTree, List<SugarParameter> parameters)
|
||||||
{
|
{
|
||||||
List<KeyValuePair<WhereType, ConditionalModel>> list = new List<KeyValuePair<WhereType, ConditionalModel>>();
|
List<KeyValuePair<WhereType, ConditionalModel>> list = new List<KeyValuePair<WhereType, ConditionalModel>>();
|
||||||
|
var index = 0;
|
||||||
foreach (var it in item.ConditionalList)
|
foreach (var it in item.ConditionalList)
|
||||||
{
|
{
|
||||||
ConditionalModel model = new ConditionalModel();
|
ConditionalModel model = new ConditionalModel();
|
||||||
@ -333,7 +334,7 @@ namespace SqlSugar
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
var con = ToConditionalCollections(it.Value as ConditionalTree,ref indexTree, parameters);
|
var con = ToConditionalCollections(it.Value as ConditionalTree,ref indexTree, parameters);
|
||||||
var sqlobj = ConditionalModelToSql(new List<IConditionalModel> { con },0);
|
var sqlobj = ConditionalModelToSql(new List<IConditionalModel> { con }, index);
|
||||||
var sql = sqlobj.Key;
|
var sql = sqlobj.Key;
|
||||||
RepairReplicationParameters(ref sql, sqlobj.Value, indexTree);
|
RepairReplicationParameters(ref sql, sqlobj.Value, indexTree);
|
||||||
model = new ConditionalModel()
|
model = new ConditionalModel()
|
||||||
@ -345,6 +346,7 @@ namespace SqlSugar
|
|||||||
indexTree++;
|
indexTree++;
|
||||||
}
|
}
|
||||||
list.Add(new KeyValuePair<WhereType, ConditionalModel>(it.Key, model));
|
list.Add(new KeyValuePair<WhereType, ConditionalModel>(it.Key, model));
|
||||||
|
index++;
|
||||||
}
|
}
|
||||||
var result= new ConditionalCollections()
|
var result= new ConditionalCollections()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user