From 78fc491635361f25a4806506a4b64bf5a846d837 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Fri, 29 Apr 2022 20:58:12 +0800 Subject: [PATCH] NavigateType.Dynamic --- .../SqlServerTest/UnitTest/UintDynamic.cs | 5 ++-- .../QueryableProvider/MappingFieldsHelper.cs | 28 +++++++++++-------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UintDynamic.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UintDynamic.cs index f3dc769cd..ea03791ca 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/UintDynamic.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UintDynamic.cs @@ -12,8 +12,9 @@ namespace OrmTest { var db = NewUnitTest.Db; var list=db.Queryable() - .Includes(it => it.Books.MappingField(z=>z.studenId,()=>it.StudentId) - .MappingField(z => z.studenId, () => it.StudentId).ToList()) + .Includes(it => it.Books.Where(z=>z.BookId==1) + .MappingField(z=>z.studenId,()=>it.StudentId) + .MappingField(z => z.BookId, () => it.StudentId).ToList()) .ToList(); } diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/MappingFieldsHelper.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/MappingFieldsHelper.cs index 72626b475..fafee5c00 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/MappingFieldsHelper.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/MappingFieldsHelper.cs @@ -35,16 +35,18 @@ namespace SqlSugar foreach (var model in list) { var clist = new List>(); + var i = 0; foreach (var item in mappingFieldsExpressions) { InitMappingFieldsExpression(item); - clist.Add(new KeyValuePair(WhereType.Or, new ConditionalModel() + clist.Add(new KeyValuePair(i==0?WhereType.Or: WhereType.And, new ConditionalModel() { FieldName = item.LeftEntityColumn.DbColumnName, ConditionalType = ConditionalType.Equal, FieldValue = item.RightEntityColumn.PropertyInfo.GetValue(model).ObjToString(), CSharpTypeName = item.RightEntityColumn.PropertyInfo.PropertyType.Name })); + i++; } conditionalModels.Add(new ConditionalCollections() { ConditionalList= clist @@ -71,34 +73,34 @@ namespace SqlSugar else if (count == 2) { setList = list.Where(it => - GetWhereByIndex(item, mappingFieldsExpressions, it, 0) || + GetWhereByIndex(item, mappingFieldsExpressions, it, 0) && GetWhereByIndex(item, mappingFieldsExpressions, it, 1) ).ToList(); } else if (count == 3) { setList = list.Where(it => - GetWhereByIndex(item, mappingFieldsExpressions, it, 0) || - GetWhereByIndex(item, mappingFieldsExpressions, it, 1) || + GetWhereByIndex(item, mappingFieldsExpressions, it, 0) && + GetWhereByIndex(item, mappingFieldsExpressions, it, 1) && GetWhereByIndex(item, mappingFieldsExpressions, it, 2) ).ToList(); } else if (count == 4) { setList = list.Where(it => - GetWhereByIndex(item, mappingFieldsExpressions, it, 0) || - GetWhereByIndex(item, mappingFieldsExpressions, it, 1) || - GetWhereByIndex(item, mappingFieldsExpressions, it, 2) || + GetWhereByIndex(item, mappingFieldsExpressions, it, 0) && + GetWhereByIndex(item, mappingFieldsExpressions, it, 1) && + GetWhereByIndex(item, mappingFieldsExpressions, it, 2) && GetWhereByIndex(item, mappingFieldsExpressions, it, 3) ).ToList(); } else if (count == 5) { setList = list.Where(it => - GetWhereByIndex(item, mappingFieldsExpressions, it, 0) || - GetWhereByIndex(item, mappingFieldsExpressions, it, 1) || - GetWhereByIndex(item, mappingFieldsExpressions, it, 2) || - GetWhereByIndex(item, mappingFieldsExpressions, it, 3) || + GetWhereByIndex(item, mappingFieldsExpressions, it, 0) && + GetWhereByIndex(item, mappingFieldsExpressions, it, 1) && + GetWhereByIndex(item, mappingFieldsExpressions, it, 2) && + GetWhereByIndex(item, mappingFieldsExpressions, it, 3) && GetWhereByIndex(item, mappingFieldsExpressions, it, 4) ).ToList(); } @@ -119,7 +121,9 @@ namespace SqlSugar private static bool GetWhereByIndex(object item, List 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)