簡體   English   中英

將 foreach 循環轉換為 Linq 表達式

[英]Convert foreach loop to Linq expression

如何將以下 foreach 循環轉換為 linq 等效項? 另外 foreach 循環或 linq 性能更好嗎? 這里的項目數量有限,可能在100個。 提前致謝。

ObservableCollection<ListItem> _ListItems = null;
string[] listItems = ListValueString.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

foreach (var lstItem in listItems)
{
    var itm = new ListItem();
    string[] listTexts = lstItem.Split(':');

    itm.ListText = listTexts[0];
    itm.ListId = Int32.Parse(listTexts[1]);
    itm.IsActive = true;

    if (_defaultString == Int32.Parse(listTexts[1]))
    {
        itm.IsInUse = true;
    }
    _ListItems.Add(itm);
}

您可以使用這個使用匿名類型的查詢來存儲中間結果:

List<ListItem> items = ListValueString.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)
    .Select(lstItem => new { lstItem, listTexts = lstItem.Split(':') })
    .Select(x => new ListItem()
    {
        ListText = x.listTexts[0],
        ListId = Int32.Parse(x.listTexts[1]),
        IsActive = true,
        IsInUse = Int32.Parse(x.listTexts[1]) == _defaultString
    })
    .ToList();
var _ListItems = new ObservableCollection<ListItem>(items);

LINQ 還使用循環,因此不會有明顯的性能差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM