Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Update multiple values to object list in c#

Tags:

c#

list

How to update multiple property of object in list?

foreach(emp e in emps){
    list1.Where(x => x.ID == e.ID && x.Salary < 5000).FirstOrDefault().Level = B;
    list1.Where(x => x.ID == e.ID && x.Salary < 5000).FirstOrDefault().Hike = e.Hike;
    list1.Where(x => x.ID == e.ID && x.Salary < 5000).FirstOrDefault().Salary = (e.Hike + 100)*e.Salary/100 ;
}    

I dont want to use multiple in-line query for each field. Also it should update same single object. Note : e.ID is not unique key. list1 can contain duplicate Ids

like image 390
Ranjeet K Avatar asked Dec 09 '25 13:12

Ranjeet K


2 Answers

You need to query your list only once

foreach (emp e in emps)
{
    var item = list.FirstOrDefault(x => x.ID == e.empID && x.Salary > 5000);
    if (item != null)
    {
        item.Level = B;
        item.Hike = e.Hike;
        item.Salary = (e.Hike + 100) * e.Salary / 100;
    }
}
like image 166
fubo Avatar answered Dec 12 '25 03:12

fubo


After giving lots of try. Looks like these will work :

foreach(emp e in emps){
    int index = list1.FindIndex(x => x.ID == e.ID && x.Salary < 5000);
    if(index != -1)
    {
        list1[index].Level = 'B';
        list1[index].Hike = e.Hike;
        list1[index].Salary = (e.Hike + 100)*e.Salary/100;
    }
} 

What you guys feel ?

like image 35
Ranjeet K Avatar answered Dec 12 '25 02:12

Ranjeet K



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!