我必须使用LINQ / Lambda而不是ForEach循环。 以下是我的代码
List<CatalogItem> catalogItems = new List<CatalogItem>();
foreach (TreeViewItem item in this.SelectedItems)
{
if (item.DataContext is CatalogItem)
{
catalogItems.Add((CatalogItem)item.DataContext);
}
}
我想知道如何在LINQ中使用'is'运算符。
我试过了
this.SelectedItems
.Where(item => item.DataContext is CatalogItem)
.Select(item => item.DataContext)
但没有得到理想的结果。 请帮忙。
答案 0 :(得分:7)
试试这个:
var catalogItems = this.SelectedItems
.OfType<TreeViewItem>()//If the SelectedItems is IEnumerable
.Select(item => item.DataContext)
.OfType<CatalogItem>()
.ToList();
答案 1 :(得分:0)
你可以尝试这个:
this.SelectedItems
.Select(item => item.DataContext as CatalogItem)
.Where(item => item != null);
答案 2 :(得分:0)
或者像这样:
var catalogItems = (from item in SelectedItems
where item.DataContext is CatalogItem
select (CatalogItem) item.DataContext).ToList();