如何使用LINQ有条件地更新List <object>项目

时间:2018-04-21 15:44:33

标签: c# entity-framework linq

如何使用LINQ有条件地更新List项目,我已经设法使用以下语法更新List中的所有项目:

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

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可以使用.Select将其投影到新集合,或使用.ForEach扩展方法影响原始列表。在任意条件下,两者都显示如下。

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; }
}

答案 2 :(得分:0)

您可以使用以下代码:

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

答案 3 :(得分:0)

希望这个答案对您有帮助。 因此,在这里我创建数据库的对象,db_table和表的列表。

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

在这里您将获得表中的数据列表

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

将更新的列添加到表

dbs.tab1.Add(tabobj);

在此处保存更改

dbs.SaveChanges();

更新表的数据

lst = dbs.tab1.ToList();