Это может показаться немного "большим", но это меня раздражает!
Представьте форму с CheckBoxList, который действует как включающий фильтр для пользователя.
Этот пользователь заполняет форму, проверяет, какие элементы в фильтре они хотят, и выключает их.
Я ищу краткий способ написать следующее утверждение LINQ:
Если элементы НЕ отмечены, показать все результаты
еще
Показать результаты, отфильтрованные по выбору пользователя
Можно ли (и если да, то как) написать это без использования условного оператора, который в основном является тем же запросом, но без метода Contains?
Я пытался вставить троичный оператор в мое предложение Where, но компилятору это совсем не понравилось.
System.Collections.Generic.List catIds = new System.Collections.Generic.List ();
foreach (ListItem lstItemCategory in lstCategories.Items)
{
if (lstItemCategory.Selected)
{
catIds.Add(Convert.ToInt64(lstItemCategory.Value));
}
}
var qry = from rategroup in rategroups
from rate in rategroup.Rates
orderby rate.RateClass.Id descending
select new
{
Category = rate.Product.ProductCategories[0].Category.Description,
rate.Product.Description,
Carrier = rate.CarrierName,
Id = rate.Product.ProductCategories[0].Id
};
this.gvSchedule.DataSource = qry.Where(x => catIds.Contains(x.Id)).OrderBy(x => x.Category).ThenBy(x => x.Carrier).ToArray();
this.gvSchedule.DataBind();