NavigateType.Dynamic

This commit is contained in:
sunkaixuan 2022-04-29 20:58:12 +08:00
parent 37e68b7138
commit 78fc491635
2 changed files with 19 additions and 14 deletions

View File

@ -12,8 +12,9 @@ namespace OrmTest
{ {
var db = NewUnitTest.Db; var db = NewUnitTest.Db;
var list=db.Queryable<StudentA>() var list=db.Queryable<StudentA>()
.Includes(it => it.Books.MappingField(z=>z.studenId,()=>it.StudentId) .Includes(it => it.Books.Where(z=>z.BookId==1)
.MappingField(z => z.studenId, () => it.StudentId).ToList()) .MappingField(z=>z.studenId,()=>it.StudentId)
.MappingField(z => z.BookId, () => it.StudentId).ToList())
.ToList(); .ToList();
} }

View File

@ -35,16 +35,18 @@ namespace SqlSugar
foreach (var model in list) foreach (var model in list)
{ {
var clist = new List<KeyValuePair<WhereType, ConditionalModel>>(); var clist = new List<KeyValuePair<WhereType, ConditionalModel>>();
var i = 0;
foreach (var item in mappingFieldsExpressions) foreach (var item in mappingFieldsExpressions)
{ {
InitMappingFieldsExpression(item); InitMappingFieldsExpression(item);
clist.Add(new KeyValuePair<WhereType, ConditionalModel>(WhereType.Or, new ConditionalModel() clist.Add(new KeyValuePair<WhereType, ConditionalModel>(i==0?WhereType.Or: WhereType.And, new ConditionalModel()
{ {
FieldName = item.LeftEntityColumn.DbColumnName, FieldName = item.LeftEntityColumn.DbColumnName,
ConditionalType = ConditionalType.Equal, ConditionalType = ConditionalType.Equal,
FieldValue = item.RightEntityColumn.PropertyInfo.GetValue(model).ObjToString(), FieldValue = item.RightEntityColumn.PropertyInfo.GetValue(model).ObjToString(),
CSharpTypeName = item.RightEntityColumn.PropertyInfo.PropertyType.Name CSharpTypeName = item.RightEntityColumn.PropertyInfo.PropertyType.Name
})); }));
i++;
} }
conditionalModels.Add(new ConditionalCollections() { conditionalModels.Add(new ConditionalCollections() {
ConditionalList= clist ConditionalList= clist
@ -71,34 +73,34 @@ namespace SqlSugar
else if (count == 2) else if (count == 2)
{ {
setList = list.Where(it => setList = list.Where(it =>
GetWhereByIndex(item, mappingFieldsExpressions, it, 0) || GetWhereByIndex(item, mappingFieldsExpressions, it, 0) &&
GetWhereByIndex(item, mappingFieldsExpressions, it, 1) GetWhereByIndex(item, mappingFieldsExpressions, it, 1)
).ToList(); ).ToList();
} }
else if (count == 3) else if (count == 3)
{ {
setList = list.Where(it => setList = list.Where(it =>
GetWhereByIndex(item, mappingFieldsExpressions, it, 0) || GetWhereByIndex(item, mappingFieldsExpressions, it, 0) &&
GetWhereByIndex(item, mappingFieldsExpressions, it, 1) || GetWhereByIndex(item, mappingFieldsExpressions, it, 1) &&
GetWhereByIndex(item, mappingFieldsExpressions, it, 2) GetWhereByIndex(item, mappingFieldsExpressions, it, 2)
).ToList(); ).ToList();
} }
else if (count == 4) else if (count == 4)
{ {
setList = list.Where(it => setList = list.Where(it =>
GetWhereByIndex(item, mappingFieldsExpressions, it, 0) || GetWhereByIndex(item, mappingFieldsExpressions, it, 0) &&
GetWhereByIndex(item, mappingFieldsExpressions, it, 1) || GetWhereByIndex(item, mappingFieldsExpressions, it, 1) &&
GetWhereByIndex(item, mappingFieldsExpressions, it, 2) || GetWhereByIndex(item, mappingFieldsExpressions, it, 2) &&
GetWhereByIndex(item, mappingFieldsExpressions, it, 3) GetWhereByIndex(item, mappingFieldsExpressions, it, 3)
).ToList(); ).ToList();
} }
else if (count == 5) else if (count == 5)
{ {
setList = list.Where(it => setList = list.Where(it =>
GetWhereByIndex(item, mappingFieldsExpressions, it, 0) || GetWhereByIndex(item, mappingFieldsExpressions, it, 0) &&
GetWhereByIndex(item, mappingFieldsExpressions, it, 1) || GetWhereByIndex(item, mappingFieldsExpressions, it, 1) &&
GetWhereByIndex(item, mappingFieldsExpressions, it, 2) || GetWhereByIndex(item, mappingFieldsExpressions, it, 2) &&
GetWhereByIndex(item, mappingFieldsExpressions, it, 3) || GetWhereByIndex(item, mappingFieldsExpressions, it, 3) &&
GetWhereByIndex(item, mappingFieldsExpressions, it, 4) GetWhereByIndex(item, mappingFieldsExpressions, it, 4)
).ToList(); ).ToList();
} }
@ -119,7 +121,9 @@ namespace SqlSugar
private static bool GetWhereByIndex(object item, List<MappingFieldsExpression> mappingFieldsExpressions, object it,int index) private static bool GetWhereByIndex(object item, List<MappingFieldsExpression> mappingFieldsExpressions, object it,int index)
{ {
return mappingFieldsExpressions[index].LeftEntityColumn.PropertyInfo.GetValue(it).ObjToString() == mappingFieldsExpressions[index].RightEntityColumn.PropertyInfo.GetValue(item).ObjToString(); var left = mappingFieldsExpressions[index].LeftEntityColumn.PropertyInfo.GetValue(it).ObjToString();
var right= mappingFieldsExpressions[index].RightEntityColumn.PropertyInfo.GetValue(item).ObjToString(); ;
return left == right;
} }
private void InitMappingFieldsExpression(MappingFieldsExpression item) private void InitMappingFieldsExpression(MappingFieldsExpression item)