关于List去重的一些问题

MyZony 发布于 2017/03/15 22:08
阅读 223
收藏 0

【开源中国 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进行去重,而是在数据库当中执行了去重方法,很疑惑。

加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部