System.Linq.Enumerable.WhereListIterator的区别是什么& System.Linq.Enumerable.WhereSelectListIterator?System.Linq.Enumerable.WhereListIterator&System.Linq.Enumerable.WhereSelectListIterator之间的区别是什么?
一个区别我甲肝注意到的是类型WhereListIterator反映集合对象上的变化,但WhereSelectListIterator不
我将使其成为如更加清晰。
我甲肝,我去找我的域对象从仓库
var buckets = testRepository.GetBuckets(testIds);
然后我选择一个循环内从上述收集某些桶的情景
var bucketsForTest = buckets.Where(bucket => bucket.TestID == test.testId);
然后我改变所有的单个属性LooserTrafficDisributor对象的方法内的桶对象。
ITrafficDistributor distributor = new LooserTrafficDisributor(bucketsForTest);
IEnumerable<Bucket> updatedBuckets = distributor.Distribute(test.AutoDecision);
LooserTrafficDisributor
public LooserTrafficDisributor(IEnumerable<Bucket> allBuckets)
{
this.allBuckets = allBuckets;
}
内LooserTrafficDistributor的分配方法的构造看起来像这样
private IEnumerable<Bucket> DistributeTraffic(bool autoDecision)
{
// allBuckets is class variable in LooserTrafficDistributor object which is set through constructor shown above .
// Omitted other details
allBuckets.Where(bucket=> bucket.IsControl == false).ToList()
.ForEach(bucket => bucket.TrafficPercentage += 10));
return allBuckets
}
这之后我看到了IEnumerable updatedBuckets集合内的反射变化。
但如果我这样做,即不是从仓库取桶收集的做了选择&然后更新以类似的方式将所有对象斗如下
var bucketsForTest = testRows.Where(testrow => testrow.url == url.url).Select(currRow => new Bucket
{
TestID = currRow.TestId,
BucketID = currRow.BucketId,
BucketName = currRow.c_bucket_name,
TrafficPercentage = Convert.ToInt32(currRow.i_bucket_percentage),
IsControl = currRow.b_is_control,
IsEnabled = currRow.b_enabled,
UpdatedAdminId = currRow.i_updated_admin_id,
LogAsSection = currRow.i_log_as_section
}) ;
ITrafficDistributor distributor = new LooserTrafficDisributor(bucketsForTest);
IEnumerable<Bucket> updatedBuckets = distributor.Distribute(test.AutoDecision, strategy.GetStatisticallySignificantLoosingBucketIds());
我不能什么变化反映了IEnumerable内updatedBuckets集合。 Infact我在DistributeTraffic方法中调试,即使在每次循环后都没有反映出变化。
老兄你只有一半仪式在说我在我的例如。我创建了“一个新的Bucket对象,**将内容从原桶中复制到新的Bucket **。在我的第二部分中,我从testRows中选择了”testrows“是一个不同类型的集合&Infact在末尾添加.TOList()可以解决问题 – Vipresh
@vipresh你能否更注意自己的写作?这很难理解。 – CodesInChaos