How to compare multiple checkboxlist values in LINQ like IN clause SQL

Viewed 166

Here in this code 'chklstDepartment' is having multiple values but is displaying but is binding data for the first selected item only. How can I get data binded for all the selected checkboxlist values?

List<LessonLearnDetails> objLessonDetails = objLessonDashboard.getLessonLearntDetails();
var searchData = objLessonDetails
    .Where(i => ddlAsset.SelectedValue == "0" ||
                i._Asset.AssetID == ddlAsset.SelectedValue)
    .Where(i => ddlAuditType.SelectedValue == "0" ||
                i._Audit.AuditTypeID == ddlAuditType.SelectedValue)
    .Where(i => chklstDepartment.SelectedValue == "0" ||
                i._Department.DepartmentID == chklstDepartment.SelectedValue)
    .Where(i => ddlStartYear.SelectedItem.Text == "--Select All--" ||
                i._Year.StartYear == ddlStartYear.SelectedItem.Text)
    .Where(i => ddlEndYear.SelectedItem.Text == "--Select All--" ||
                i._Year.EndYear == ddlEndYear.SelectedItem.Text)
    .Distinct()
    .ToList();
BindGrid(searchData);

I have also used a function for storing checked values and passed that values using chklstDepartment.Contains() but it returning 0.

for (int i = 0; i < chklstDepartment.Items.Count; i++)
{
    if (chklstDepartment.Items[i].Selected)
    {
        chbstr += chklstDepartment.Items[i].Value + ",";
        count++;
        //if(count > 1)
    }
    var data = new string[] {chbstr};
}
chbstr = chbstr == string.Empty ? "0" : chbstr;
//chbstr = chklstDepartment.SelectedValue;
//chbstr = chbstr.Split(',').ToString();
return chbstr;
1 Answers
Related