首页 新闻 搜索 专区 学院

这个是微软的Bug吗???

0
悬赏园豆:100 [已关闭问题] 关闭于 2015-12-31 13:40

  int intCount = 0;

如上图所示,我今天有一段代码,我先查出一个信息集合List<A> A,然后再根据查出的集合A进一步去查信息List<B> B,然后查出最终结果 List<C> C,有一点特别的是我新组成的对象拥有 A和B的某些共同属性,所以我再写select的时候 LoginName=pagedApply.LoginName,但是执行结果新生成的最终对象的所有LoginName都是第一A的Item的值。百思不得其解,然后索性如图写代码,发现得到的数据仍然全部是Messi0

求解啊,这是为什么,是微软的Bug,还是我学艺不精,求大神指路

Lionel Andrés Messi的主页 Lionel Andrés Messi | 初学一级 | 园豆:82
提问于:2015-12-29 17:58
< >
分享
所有回答(7)
0

肯定是微软的Bug。

liqipeng | 园豆:1160 (小虾三级) | 2015-12-29 18:28

 从哪里肯定?

支持(0) 反对(0) Lionel Andrés Messi | 园豆:82 (初学一级) | 2015-12-29 22:35
0

会有这样的问题,回头看看。

Supper_litt | 园豆:785 (小虾三级) | 2015-12-30 08:03

除非,这个lamda也是延迟处理,否则不会有这样的情况。

支持(0) 反对(0) Supper_litt | 园豆:785 (小虾三级) | 2015-12-30 08:42

@Supper_litt: 已经 tolist了 ,所有拿到都是 list对象了,没有延迟处理呀

支持(0) 反对(0) Lionel Andrés Messi | 园豆:82 (初学一级) | 2015-12-30 09:24
0

把每步都加上ToList()

幻天芒 | 园豆:36652 (高人七级) | 2015-12-30 09:19

没有用的,已经试过了 
原    foreach (var pagedApply in pagedApplies.Items)

修改为

   foreach (var pagedApply in pagedApplies.Items.ToList())

还试过 ForEach()

你们在工作中有遇到此类情况吗?

支持(0) 反对(0) Lionel Andrés Messi | 园豆:82 (初学一级) | 2015-12-30 09:23

@Lionel Andrés Messi: 没有,确保每步都ToList(),另外跟踪下数据嘛。

支持(0) 反对(0) 幻天芒 | 园豆:36652 (高人七级) | 2015-12-30 15:06
0

只有2条记录,你确定5次中每一次pagedApply都可以取到数据么?

米修君 | 园豆:553 (小虾三级) | 2015-12-30 09:31

嗯,我确定,那个显示的记录和代码截图的时候有时间差,那个显示记录图只是 来证明所有的LoginName都是 messi0 的

支持(0) 反对(0) Lionel Andrés Messi | 园豆:82 (初学一级) | 2015-12-30 09:39

@Lionel Andrés Messi: 你暂时把LoginName=temp12 改成 LoginName=intCount 看看结果是怎样

支持(0) 反对(0) 米修君 | 园豆:553 (小虾三级) | 2015-12-30 10:49

@米修君: 

 

As you wish,

但值还是有问题

支持(0) 反对(0) Lionel Andrés Messi | 园豆:82 (初学一级) | 2015-12-30 11:00

@Lionel Andrés Messi: 是resultQueryable里的值就已经不对了,还是addrange后applyview才不对的?

检查一下ApplyView的code呢?

支持(0) 反对(0) 米修君 | 园豆:553 (小虾三级) | 2015-12-30 11:23

@米修君: ..............我对此表示有点....

好吧,我偷偷告诉你吧

首先是resultQueryable里面的值不对

接着,addrange后applyview也不对了

为什么呢,因为applyview里面的值是用addrange方法将resultQueryable加进去的

..............

支持(0) 反对(0) Lionel Andrés Messi | 园豆:82 (初学一级) | 2015-12-30 11:27

@Lionel Andrés Messi:

不用偷偷,不是在找微软的bug么~  如果真是addrange错了, 那不就找到微软的bug了么~

再继续找:

1.在foreach里定义一个 int tmp = intcount+1,然后loginname=tmp

2.检查ApplyView的code

支持(0) 反对(0) 米修君 | 园豆:553 (小虾三级) | 2015-12-30 11:32
0

debug下不行么

l3oz | 园豆:586 (小虾三级) | 2015-12-30 10:48

在调试的时候,第二次循环的时候可以清楚的看到

LoginName = temp12,//这个值为Messi1 
 Code = applyDetail.ApplyCode,
 Title = product.Title

 

但是 resultQueryable 的Code就不为Messi1,而为Messi0

支持(0) 反对(0) Lionel Andrés Messi | 园豆:82 (初学一级) | 2015-12-30 10:50

@Lionel Andrés Messi: 你确定第二次循环查出来的resultQueryable 里面有数据,并且LoginName 是Messi0?

支持(0) 反对(0) l3oz | 园豆:586 (小虾三级) | 2015-12-30 11:10
0

是不是下面要执行的代码对applyViews进行了修改?

水晶途途 | 园豆:1434 (小虾三级) | 2015-12-30 11:05

这是这个方法的最后两句

 

pagedApplies.Items = applyViews;
return pagedApplies;

 

其他没有了

 


现在就是 applyViews这个有问题

支持(0) 反对(0) Lionel Andrés Messi | 园豆:82 (初学一级) | 2015-12-30 11:14
0

看你的过滤条件。。。

搁忆 | 园豆:612 (小虾三级) | 2015-12-30 12:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册