代码:
foreach (var item in items)
testItems.Add(new TestItem { Header = item.TestItemTypeName, Content = item });
testItems
属于ObservableCollection<TabItem>
类型
如何将上面的foreach循环转换为linq格式?谢谢。
怎么样
items.ForEach(i => testItems.Add(
new TestItem
{
Header = i.TestItemTypeName,
Content = i
}));
鉴于items
是ObservableCollection<TabItem>
你可以试试
items.ToList().ForEach(i => testItems.Add(
new TestItem
{
Header = i.TestItemTypeName,
Content = i
}));
前提是 testItems 具有AddRange
函数,即继承自 List
:
testItems.AddRange(items.Select(item => new TestItem{ Header = item.TestItemTypeName, Content = item }));
正如你提到的,这是一个ObservableCollection
,所以该方法不可用。在这种情况下,您提供的方式是最简单的。但是,如果您需要更频繁地使用此功能,请考虑检查以下链接:
ObservableCollection 不支持 AddRange 方法,因此我会收到每个添加项目的通知,此外 INotifyCollectionChange?
或者也许:
var testItems = items
.Select(item =>
new TestItem {
Header = item.TestItemTypeName,
Content = item
})
.ToList();