mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2026-01-21 18:48:27 +08:00
Add db.utils.ToTree
This commit is contained in:
@@ -211,7 +211,7 @@ namespace SqlSugar
|
||||
return GetTreeRoot(childListExpression, parentIdExpression, pk, list, rootValue);
|
||||
}
|
||||
|
||||
private List<T> GetTreeRoot(Expression<Func<T, IEnumerable<object>>> childListExpression, Expression<Func<T, object>> parentIdExpression, string pk, List<T> list, object rootValue)
|
||||
internal List<T> GetTreeRoot(Expression<Func<T, IEnumerable<object>>> childListExpression, Expression<Func<T, object>> parentIdExpression, string pk, List<T> list, object rootValue)
|
||||
{
|
||||
var childName = ((childListExpression as LambdaExpression).Body as MemberExpression).Member.Name;
|
||||
string parentIdName = GetParentName(parentIdExpression);
|
||||
|
||||
@@ -6,6 +6,7 @@ using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Dynamic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
@@ -888,8 +889,9 @@ namespace SqlSugar
|
||||
|
||||
#endregion
|
||||
|
||||
#region Conditional
|
||||
public List<IConditionalModel> JsonToConditionalModels(string json)
|
||||
{
|
||||
{
|
||||
List<IConditionalModel> conditionalModels = new List<IConditionalModel>();
|
||||
var jarray = this.Context.Utilities.DeserializeObject<JArray>(json);
|
||||
foreach (var item in jarray)
|
||||
@@ -913,16 +915,16 @@ namespace SqlSugar
|
||||
{
|
||||
// ConditionalType = (ConditionalType)Convert.ToInt32(),
|
||||
FieldName = item["FieldName"] + "",
|
||||
CSharpTypeName = item["CSharpTypeName"].ObjToString().IsNullOrEmpty() ? null: item["CSharpTypeName"].ObjToString(),
|
||||
FieldValue = item["FieldValue"].Value<string>()==null?null: item["FieldValue"].ToString()
|
||||
CSharpTypeName = item["CSharpTypeName"].ObjToString().IsNullOrEmpty() ? null : item["CSharpTypeName"].ObjToString(),
|
||||
FieldValue = item["FieldValue"].Value<string>() == null ? null : item["FieldValue"].ToString()
|
||||
};
|
||||
if (typeValue.IsInt())
|
||||
{
|
||||
conditionalModel.ConditionalType = (ConditionalType)Convert.ToInt32(typeValue);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
conditionalModel.ConditionalType = (ConditionalType)Enum.Parse(typeof(ConditionalType),typeValue.ObjToString());
|
||||
conditionalModel.ConditionalType = (ConditionalType)Enum.Parse(typeof(ConditionalType), typeValue.ObjToString());
|
||||
}
|
||||
conditionalModels.Add(conditionalModel);
|
||||
}
|
||||
@@ -960,18 +962,26 @@ namespace SqlSugar
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static ConditionalType GetConditionalType(JToken value)
|
||||
{
|
||||
if (value["ConditionalType"].Type == JTokenType.String)
|
||||
if (value["ConditionalType"].Type == JTokenType.String)
|
||||
{
|
||||
var stringValue = value["ConditionalType"].Value<string>();
|
||||
if (!stringValue.IsInt())
|
||||
if (!stringValue.IsInt())
|
||||
{
|
||||
return (ConditionalType)Enum.Parse(typeof(ConditionalType), stringValue);
|
||||
}
|
||||
}
|
||||
return (ConditionalType)Convert.ToInt32(value["ConditionalType"].Value<int>());
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Tree
|
||||
public List<T> ToTree<T>(List<T> list, Expression<Func<T, IEnumerable<object>>> childListExpression, Expression<Func<T, object>> parentIdExpression, Expression<Func<T, object>> pkExpression, object rootValue)
|
||||
{
|
||||
var pk = ExpressionTool.GetMemberName(pkExpression);
|
||||
return (this.Context.Queryable<T>() as QueryableProvider<T>).GetTreeRoot(childListExpression,parentIdExpression,pk,list,rootValue);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Dynamic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
@@ -43,5 +44,6 @@ namespace SqlSugar
|
||||
Task PageEachAsync<T, ResultType>(IEnumerable<T> pageItems, int pageSize, Func<List<T>, Task<ResultType>> action);
|
||||
List<IConditionalModel> JsonToConditionalModels(string json);
|
||||
DataTable DictionaryListToDataTable(List<Dictionary<string, object>> dictionaryList);
|
||||
List<T> ToTree<T>(List<T> list, Expression<Func<T, IEnumerable<object>>> childListExpression, Expression<Func<T, object>> parentIdExpression, Expression<Func<T, object>> pkExpression, object rootValue);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user