【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
谁遇到过这种情况,C#在使用EF实体加载了一个表的数据,并且new了一个新的list集合,循环添加新的数据到容器内,在对新的容器进行Distinct去重,在ado.net监视和数据库日志里面却发现执行了去重操作,按道理说,这个集合已经是我在内存中new的list容器操作,为什么还是会去数据库执行?求各位大佬解答
代码大概如下:
DbContext entitys = EntityFactory.CreateEntity(); // 从工厂类获取上下文
var List<T> _old = DbSet<T> model = entitys.Set<T>().ToList();
List<TB_Person> _syncData = new List<TB_Person>();
foreach(var item in _old)
{
var taper = convert(item); // 这里的convert是对原来T这个类型进行转换,返回一个转换好的TB_Person类型
_syncData.Add(taper);
}
List<TB_Person> _newList = _syncData.Distinct(new TestDistinct()).ToList();
这里TestDistinct就是一个简单的比较器,但是执行以上代码的时候,并没有对内存中的_syncData进行去重,而是在数据库当中执行了去重方法,很疑惑。