How to change value of an object using linq

前端 未结 4 1195
半阙折子戏
半阙折子戏 2021-01-23 14:10

I have the following statment that if isdefault is true to this collection i need to set each object isDefault property to false.

  custHead.lstCustomziation.Whe         


        
相关标签:
4条回答
  • 2021-01-23 14:30

    Linq may have been initially created for querying but it has evolved and is used as functional programming methods, equivalents to "map", "reduce", and "filter" used in other languages.

    In your example I would suggest:

    var list = custHead.lstCustomziation.Where(x => x.IsDefaultSelected == true)
                .Select(x=> TransformItem(x));
    
    private XType TransformItem(XType item){
        item.IsDefaultSelected=false;
        return item;
    }
    
    0 讨论(0)
  • 2021-01-23 14:38

    As the Q of LINQ says, LINQ is designed for queries, not updates.

    Just enumerate the LINQ result and apply your update.

    0 讨论(0)
  • 2021-01-23 14:47

    LINQ is for querying. You should use a foreach loop to make changes:

    foreach (var item in custHead.lstCustomziation.Where(x => x.IsDefaultSelected))
    {
        item.IsDefaultSelected = false;
    }
    

    That said, if IsDefaultSelected is false for the other items anyway, it may be simpler just to unconditionally set it:

    foreach (var item in custHead.lstCustomziation)
    {
        item.IsDefaultSelected = false;
    }
    
    0 讨论(0)
  • 2021-01-23 14:48

    Linq is for querying, not updating. You can get a list of the items you want to change and then update using a normal loop:

    var list = custHead.lstCustomziation.Where(x => x.IsDefaultSelected == true)
    
    foreach(var item in list)
        item.IsDefaultSelected=false;
    
    0 讨论(0)
提交回复
热议问题