Navigate query

This commit is contained in:
sunkaixuan
2022-04-12 00:14:35 +08:00
parent 1e3f9f899e
commit 4bf2d3fd96
3 changed files with 29 additions and 8 deletions

View File

@@ -44,11 +44,11 @@ namespace SqlSugar
{
ExecuteByLay(item, RootList.Select(it => it as object).ToList(), SelectR1);
}
else if(i == 2)
else if (i == 2)
{
var memberExpression = ((_preExpressionList.Last() as LambdaExpression).Body as MemberExpression);
var navObjectName = memberExpression.Member.Name;
var list = RootList.Select(it =>(it.GetType().GetProperty(navObjectName).GetValue(it))).ToList();
var list = RootList.Select(it => (it.GetType().GetProperty(navObjectName).GetValue(it))).ToList();
ExecuteByLay(item, list, SelectR2);
}
_preExpressionList.Add(item);
@@ -103,16 +103,16 @@ namespace SqlSugar
ConditionalType = ConditionalType.In,
FieldName = aColumn.DbColumnName,
FieldValue = String.Join(",", ids),
CSharpTypeName = bColumn.PropertyInfo.PropertyType.Name
CSharpTypeName = aColumn.PropertyInfo.PropertyType.Name
}));
var bids=this.Context.Queryable<object>().AS(mappingEntity.DbTableName).Where(conditionalModels).Select<string>(bColumn.DbColumnName).ToList();
var abids = this.Context.Queryable<object>().AS(mappingEntity.DbTableName).Where(conditionalModels).Select<SugarAbMapping>($"{aColumn.DbColumnName} as aid,{bColumn.DbColumnName} as bid").ToList();
List<IConditionalModel> conditionalModels2 = new List<IConditionalModel>();
conditionalModels2.Add((new ConditionalModel()
{
ConditionalType = ConditionalType.In,
FieldName = bPk.DbColumnName,
FieldValue = String.Join(",", bids),
FieldValue = String.Join(",", abids.Select(it => it.Bid).ToArray()),
CSharpTypeName = bColumn.PropertyInfo.PropertyType.Name
}));
var navList = selector(this.Context.Queryable<object>().AS(bEntityInfo.DbTableName).Where(conditionalModels2));
@@ -125,7 +125,13 @@ namespace SqlSugar
var ilist = instance as IList;
foreach (var value in navList)
{
ilist.Add(value);
var pk = listItemPkColumn.PropertyInfo.GetValue(item).ObjToString();
if (abids.Any(x => x.Aid == pk))
{
var bids = abids.Where(x => x.Aid == pk).ToList();
if (bids.Count()>0)
ilist.Add(value);
}
}
navObjectNamePropety.SetValue(item, instance);
}

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SqlSugar
{
public class SugarAbMapping
{
public string Aid { get; set; }
public string Bid { get; set; }
}
}

View File

@@ -99,6 +99,7 @@
<Compile Include="Abstract\QueryableProvider\NavigatManager.cs" />
<Compile Include="Abstract\SaveableProvider\StorageableDataTable.cs" />
<Compile Include="Abstract\SugarProvider\SqlSugarCoreProvider.cs" />
<Compile Include="Entities\SugarAbMapping.cs" />
<Compile Include="Entities\JoinMapper.cs" />
<Compile Include="Enum\NavigatType.cs" />
<Compile Include="Enum\SugarActionType.cs" />