Ahmed Abd Elmoniem
Ahmed Abd Elmoniem

Reputation: 179

How to use lambda expression with asp.net DataList in C#

I have created a DataList on aspx file that contains checkbox control that repeated base on a data pulled from database.

I want to get DataList items and work on it, I already did use foreach loop, but I want to select and filter the items using lambda.

I couldn't convert the DataList.items to List nor an Array. there is DataList.items.CopyTo but it copies to Array object and couldn't convert to DataListItem [] array.

this is what has been done:

int count = 0;

foreach (DataListItem item in weaknesses.Items)
{
    CheckBox weakness = (CheckBox)item.FindControl("cbWeakness");
    if (weakness.Checked)
    {
        count++;
    }
}

and this is what I'm trying to do:

count = weaknesses.Items.Where(i => ((CheckBox)i.FindControl("cbWeakness")).checked).Count();

Upvotes: 3

Views: 126

Answers (1)

VDWWD
VDWWD

Reputation: 35554

You can do that with this lambda.

int count = DataList1.Items.Cast<DataListItem>().Where(x => ((CheckBox)x.FindControl("CheckBox1")).Checked).Count();

The DataList

<asp:DataList ID="DataList1" runat="server">
    <ItemTemplate>
        <asp:CheckBox ID="CheckBox1" runat="server" />
    </ItemTemplate>
</asp:DataList>

Upvotes: 3

Related Questions