mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-11-08 18:34:55 +08:00
Update core
This commit is contained in:
@@ -5,6 +5,7 @@ using System.Dynamic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace SqlSugar
|
namespace SqlSugar
|
||||||
@@ -18,7 +19,11 @@ namespace SqlSugar
|
|||||||
Func<IEnumerable<T>, TData> dataSelector)
|
Func<IEnumerable<T>, TData> dataSelector)
|
||||||
{
|
{
|
||||||
DataTable table = new DataTable();
|
DataTable table = new DataTable();
|
||||||
var rowName = ((MemberExpression)rowSelector.Body).Member.Name;
|
var rowName = "";
|
||||||
|
if (rowSelector.Body is MemberExpression)
|
||||||
|
rowName = ((MemberExpression)rowSelector.Body).Member.Name;
|
||||||
|
else
|
||||||
|
rowName =string.Join(UtilConstants.ReplaceKey, ((NewExpression)rowSelector.Body).Arguments.Select(it=>it as MemberExpression).Select(it=>it.Member.Name));
|
||||||
table.Columns.Add(new DataColumn(rowName));
|
table.Columns.Add(new DataColumn(rowName));
|
||||||
var columns = source.Select(columnSelector).Distinct();
|
var columns = source.Select(columnSelector).Distinct();
|
||||||
|
|
||||||
@@ -44,7 +49,28 @@ namespace SqlSugar
|
|||||||
dataRow.ItemArray = items.ToArray();
|
dataRow.ItemArray = items.ToArray();
|
||||||
table.Rows.Add(dataRow);
|
table.Rows.Add(dataRow);
|
||||||
}
|
}
|
||||||
|
var firstName = table.Columns[0]?.ColumnName;
|
||||||
|
if (firstName.ObjToString().Contains(UtilConstants.ReplaceKey))
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
foreach (var item in Regex.Split(firstName,UtilConstants.ReplaceKey))
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
table.Columns.Add(item);
|
||||||
|
table.Columns[item].SetOrdinal(i);
|
||||||
|
}
|
||||||
|
foreach (DataRow row in table.Rows)
|
||||||
|
{
|
||||||
|
var json =row[firstName];
|
||||||
|
var list = json.ToString().TrimStart('{').TrimEnd('}').Split(',').Select(it=>it.Split('=')).ToList();
|
||||||
|
foreach (var item in Regex.Split(firstName, UtilConstants.ReplaceKey))
|
||||||
|
{
|
||||||
|
var x = list.First(it => it.First().Trim() == item.Trim());
|
||||||
|
row[item] =x[1] ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
table.Columns.Remove(firstName);
|
||||||
|
}
|
||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
public static List<dynamic> ToPivotList<T, TColumn, TRow, TData>(
|
public static List<dynamic> ToPivotList<T, TColumn, TRow, TData>(
|
||||||
|
|||||||
Reference in New Issue
Block a user