Som
Som

Reputation: 13

Need to combine two lambda expressions in one to execute two separate conditions of one parameter

tempChoiceConfigItems is a list and has two properties, IsIncluded and IsSelected.

In the case when both of them are true then IsIncluded will take preference and for that item IsSelected will be true and all other IsSelected will be false.

Can I write that in one singe lambda expression?

if (tempChoiceConfigItems.Any(cg => cg.IsIncluded == true)) {
    tempChoiceConfigItems.Where(wtci => wtci.IsIncluded == true)
    .Select(stc => {
        stc.IsSelected = true;
        return stc;
    })
    .ToList();

    tempChoiceConfigItems.Where(wtci => wtci.IsIncluded == false)
    .Select(stc => {
        stc.IsSelected = false;
        return stc;
    })
    .ToList();
}

Upvotes: 0

Views: 60

Answers (3)

Som
Som

Reputation: 13

I did this

            if (tempChoiceConfigItems.Any(cg => cg.IsIncluded == true))
            {
                tempChoiceConfigItems
                .Select(stc =>
                {
                    stc.IsSelected = stc.IsIncluded;
                    return stc;
                })
                .ToList();
            }

Upvotes: 0

Marco Salerno
Marco Salerno

Reputation: 5201

Substitute all that piece of code with:

tempChoiceConfigItems.ForEach(x => { x.IsSelected = x.IsIncluded; });

Upvotes: 1

Pranav Singh
Pranav Singh

Reputation: 20191

tempChoiceConfigItems.ForEach(x=> {if(x.IsIncluded == true && x.IsSelected==true) x.IsSelected=true; else x.IsSelected=false;});

Upvotes: 0

Related Questions