簡體   English   中英

如何獲取int數組的前3個並在Listbox / ListView中顯示值

[英]How to get Top 3 of an int Array and display values in Listbox / ListView

我想知道如何在使用數組的文本文件中找到利息之后的前三筆交易。 基本上,當應用程序打開時,它將在列表框或列表視圖框中加載前3名客戶及其對應於其姓名的現金價值。

在文本文件中,有許多數字,例如交易號,現金存款額,利息后現金額。 我該如何區分它們,以便僅找到利息之后的前三位現金量並顯示名稱?

private void Form5_Load(object sender, EventArgs e)
{
    int[] array = new int[10];
    Console.WriteLine("transactions.txt");
    for(int i=0;i<10;i++)
    {
        array[i] = Convert.ToInt32(Console.ReadLine());
    }

    int largest = array[9];
    for(int i=0;i<10;i++)
    {

        if (array[i] > largest)
        {
            largest = array[i];
        }
    }
    Console.WriteLine("The largest transaction amount is {0}", largest);
    Console.Read();
}

//Here is the code for whats in the transactions.txt file.
public void CreateFile()
{
    StreamWriter outputFile;
    outputFile = File.AppendText("transactions.txt");
    outputFile.WriteLine("Transaction Number :" + " " + TransactionIDLabel.Text);
    outputFile.WriteLine("Investor :" +" " + InvestorNameLabel.Text);
    outputFile.WriteLine("Initial Amount" + " " +AmountLabel.Text);
    outputFile.WriteLine("Date Invested" +" " +DateLabel.Text);
    outputFile.WriteLine("Period Chosen" + " "+DaysInvestedLabel.Text);
    outputFile.WriteLine("Rate Chosen" + " " + RateLabel.Text);
    outputFile.WriteLine("Total Interest" + " " +InterestAmountLabel.Text);
    outputFile.WriteLine("Total Amount" + " " + TotalAmountLabel.Text);
    outputFile.WriteLine("");
    outputFile.Close();
}

進行以下更改,您將獲得前三名

  • 可變的最大為int數組int[] largest
  • 使用OrderByDescending對數組進行降序排序
  • 使用Take(3)獲得所需的交易
  • msg變量僅用於較短的代碼,否則stackoverflow上的代碼窗口需要滾動

希望這可以幫助,

int[] largest = array.OrderByDescending( item => item).Take(3).ToArray();
int count = 1;

string msg = "The {0} largest transaction amount is {1}";

foreach (var element in largest)
{         
    Console.WriteLine(msg, count++,element);   
} 

這是列表框和列表視圖的示例代碼

private void button1_Click(object sender, EventArgs e)
{
   int[] array = new int[] { 1, 3, 4, 5, 6, 7, 8, 99, 22, 44 };
   int[] largest = array
                    .OrderByDescending(item => item)
                    .Take(array.Length).ToArray();

     foreach (var element in largest)
     {
           listBox1.Items.Add(element);
           listView1.Items.Add(new ListViewItem(element.ToString()));
     }
}

這就是它的樣子

在此處輸入圖片說明

我建議將每一行讀入一個對象/結構實例,然后使用類似的方法獲得前三名

新的列表([[如果您仍然使用數組來保存它們]]。OrderByDescending(x => x.Amount).Take(3);

暫無
暫無

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

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