簡體   English   中英

訂單對象清單項目

[英]Order objects List items

在我的應用程序中,我有對象數組。 每個對象都包含帶有URL的List 我想Lists順序顯示Lists項:

First item from first objects list
First item from second objects list
First item from third objects list
Second item from first objects list
..
etc

現在我正在使用foreach循環:

            foreach (Account acc in account)
            {
                    listBox1.Items.Add(acc.ShowData())
            }

Account類中使用public方法獲取項目:

public string ShowData()
{          
        string singleItem = LinksArray.First();
        LinksArray.RemoveAt(0);
        return singleItem;               
}

它可行,但我認為可能會有更優雅的方法來做到這一點。 你有什么主意嗎?

嘗試將所有內容展平為一組索引/ URL對,然后按索引排序:

var orderedUrls = objects
    .SelectMany(o => o.Urls.Select((url, idx) => new { Index = idx, Url = url }))
    .OrderBy(indexedUrl => indexedUrl.Index)
    .Select(indexedUrl => indexedUrl.Url)

這對我有用:

List<Uri>[] arrayOfListsOfUris = ...

IEnumerable<Uri> sorted =
    arrayOfListsOfUris
        .Select(xs => xs.Select((x, n) => new { x, n }))
        .Concat()
        .OrderBy(y => y.n)
        .Select(y => y.x);

foreach (Uri uri in sorted)
{
    //Do something with each Uri
}

名為ShowData的方法永遠不要修改其顯示的數據。 相反,這樣可能會更好地為您服務;

public IEnumerable<String> GetData()
{
    return LinksArray;
}

然后可以使用;

foreach(Account acc in accounts)
{
    foreach(String data in acc.GetData())
    {
        // add to listbox items
    }
}

這樣可以使您的數據與類的使用者顯示和讀取數據的方式保持清晰的區分。 也可以選擇使用LINQ。

暫無
暫無

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

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