简体   繁体   中英

How do I conditionally update List<Object> items using LINQ

如何使用 LINQ 有条件地更新List<object>项目,我设法使用以下语法更新List<object>所有项目:

var updatedList = sourceList.Select( x => { x.PropertyA = NewValue; return x; }).ToList();

var updatedList = sourceList.Select( x => {return x = x.PropertyA == SomeValue ? x1 : x;}).ToList();

You can either project it to a new collection using the .Select, or affect the original list using the .ForEach extension method. Both are shown below, given an arbitrary condition.

class Program
{
    static void Main(string[] args)
    {

        List<testClass> ogList = new List<testClass>();

        bool testCondition = true;

        //use the select to update and project to new collection
        var updated =
            ogList 
            .Select(x =>
            {
                if (testCondition)
                    x.testProp = 1;

                return x;
            }).ToList();
        //use the foreach to update original collection
        ogList.ForEach(x =>
        {
            if (testCondition)
                x.testProp = 1;
        });
    }
}

public class testClass
{
    public int testProp { get; set; }
}

You can use this code:

sourceList.Where(w => w.CheckProperty == valueofProperty).Select(s => {
                            s.PropertyA  = valueofPropertyA ;
                            s.PropertyB  = valueofPropertyB;
                            return s;
                        }).ToList();

Hope this answer will help you. So here I creating objects of my database, list of my db_table and table.

private DB dbs = new DB();
List<tab1> lst = new List<tab1>();
tab1 tabobj = new tab1();

here you will get the list of data in your table

lst = dbs.tab1.ToList();
````````````
updating the table 
```````````
tabobj.c1 = "value";
tabobj.c2 = "value";

adding updated columns to table

dbs.tab1.Add(tabobj);

save changes here

dbs.SaveChanges();

data of updated table

lst = dbs.tab1.ToList();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM