LINQ: how to convert a list by performing calculations on each item

I have a class

Class MyObject
{
    decimal v1;
    decimal dv1;
    decimal v2;
    decimal dv2;
}

and a

List<MyObject> ...

I need to process each list item by adding dv1 in v1 and dv2 in v2 Something like (pseudo-syntax):

myList.Transform(o=>o.v1+=o.dv1, o.v2+=o.dv2)

How can I do this (obviously my pseudo-syntax is not working)?

thank

+3
source share
5 answers

You can use the List ForEach method:

List<MyObject> objects = new List<MyObject>();

// Populate list.

objects.ForEach(obj => {
  obj.v1 += obj.dv1;
  obj.v2 += obj.dv2;
});
+6
source

LINQ is created to get a subset of a given enumeration or to create an enumeration with new types from a list.

, LINQ . , foreach,

foreach(var item in objects)
{
    item.v1 += obj.dv1;
}

, , -

foreach(var item in object.Where(o => o.v1 % 2 == 0))

, ForEach(), , :
Erics.

+6

LINQ 'select'

list.Select( obj => new MyObject(obj.v1 + obj.dv1, obj.dv1, obj.v2 + obj.dv2, obj.dv2))

, ; . / . , ; for/for-each, .

+2

, linq, , :

List<MyClass> objects = GetMyClasses();
Func<Action<MyClas>s, bool> do = (action) => { action(); return true; }
(from o in objects
 where do( o, b=> { b.v1 += b.dv1; b.v2 += b.dv2; } )
 select o).ToArray();
0
source

Thanks for all the answers. I thought linq might provide an elegant way, but you're right - foreach does the job fine.

0
source

Source: https://habr.com/ru/post/1748969/


All Articles