Using LINQ to Update A Property in a List of Entities

前端 未结 5 1046
耶瑟儿~
耶瑟儿~ 2021-01-31 13:58

Say I have an entity that looks something like this simple example:

MyEntity 
{
   int property1;
   int property2;
   int property3;
}

Now ass

相关标签:
5条回答
  • 2021-01-31 14:11

    To Darin's point, LINQ is built for querying. I've gotten into the mindset when working with LINQ that objects being queried should be treated as immutable. However, the Select operator is also great for transformations.

    So, you could solve your problem by transforming from one set to another as follows:

    var result = myEntityCollection.Select(e => {
       var ret = e;
       e.property1 = 100;
       return e; });
    

    The items in the original collection are untouched, but the items in result will now all have property1 set to 100.

    0 讨论(0)
  • 2021-01-31 14:13

    Here are two solutions that I found that worked for me.

    result = result.Where(x => (x.property1 = 100) == 100).ToList();
    

    or

    result = result.Select(c => { c.property1 = 100; return c; }).ToList();
    
    0 讨论(0)
  • 2021-01-31 14:15

    Like this:

    var result = GetMyIEnumerable()
                    .ToList();
    result.ForEach(x => x.property1 = 100);
    
    0 讨论(0)
  • 2021-01-31 14:32

    If you have 100 properties maybe reflection would be most elegant. LINQ's for querying not updating.

    0 讨论(0)
  • 2021-01-31 14:35

    In addition to Darrelk and mkedobbs, VB.NET Code:

    object.list =
        object.list.Select(Function(x)
                               x.property = If(x.property.Length > 3, x.property.Substring(0, 3), x.property)
                               Return x
                           End Function).ToList()
    
    0 讨论(0)
提交回复
热议问题