如何将以下 foreach 循环转换为 linq 格式

本文关键字:转换 linq 格式 循环 foreach | 更新日期: 2023-09-27 17:57:23

代码:

foreach (var item in items)
  testItems.Add(new TestItem { Header = item.TestItemTypeName, Content = item });

testItems属于ObservableCollection<TabItem>类型

如何将上面的foreach循环转换为linq格式?谢谢。

如何将以下 foreach 循环转换为 linq 格式

怎么样

items.ForEach(i => testItems.Add(
    new TestItem
    {
        Header = i.TestItemTypeName,
        Content = i
    }));

鉴于itemsObservableCollection<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();