öğelerinin toplamına (veya bir araya getirilmesine) bağlı olarak bir öğe listesi var ve almak istiyorumSadece bir öğenin toplamını (veya öğelerin bir araya toplanmasını) karşılayın. Aşağıdaki kod iş yapar, ancak bunun uygun bir modelin olması gerektiği sıra dışı bir sorun olmadığından eminim.Linq TakeWhile
var list = new List<int> { 1, 2, 3, 4, 5, 6, 7 };
int tmp = 0;
var listWithSum = from x in list
let sum = tmp+=x
select new {x, sum};
int MAX = 10;
var result = from x in listWithSum
where x.sum < MAX
select x.x;
birileri muhtemelen bir sorguya TakeWhile ve Agrega birleştirerek, daha güzel bir şekilde görev çözmek için nasıl biliyor mu?
Thx
Bunun farkındayım: Daha sonra yapabileceği biri değişkenleri bir sorgunun yan etkisi olarak değiştirmemelidir. ListWithSum iki kez kullanılırsa, tmp aralarında başlatılmamışsa farklı sonuçlara yol açacaktır. Bu nedenlerden biri, neden bu çözüm kötü biri olduğuna inanıyorum! –
var list = yeni Liste {1, 2, 3, 4, 5, 6, 7}; int tmp = 0; int MAX = 10; var result2 = list.TakeWhile (x => { tmp + = x; dönüş tmp
thx Nick. Bu daha kısa (ve dolayısıyla daha güzel) bir versiyon olsa da, bir yan etki ile aynı sorunu vardır. –