簡體   English   中英

同時創建和顯示多個數組C#

[英]Creating and Displaying multiple arrays simultaniously C#

我是C#和整體編程的新手,但是我一直無法提出自己想做的解決方案。 我希望能夠創建一種方法來顯示包含來自三個外部文本文件的元素的多個數組,每行中都有值(例如@“ Files \\ Column1.txt”,@“ Files \\ Column2.txt” @“ Files \\ Column3。文本”)。 然后需要在命令行中將其顯示為:

https://www.dropbox.com/s/0telh1ils201wpy/Untitled.png?dl=0

我還需要能夠對每個列進行單獨排序(例如,第3列從最低到最高)。

我可能已經對此做出了可怕的解釋,但是我不確定該怎么做! 任何可能的解決方案將不勝感激!

一種方法是將每個文件中的對應項存儲在Tuple ,然后將其存儲在List 這樣,所有項目將保持在一起,但是您可以在任何Tuple字段中對列表進行排序。 如果您要對這些項目進行更詳細的操作,我建議創建一個簡單的類來存儲它們,這樣代碼將更易於維護。

就像是:

public class Item
{
    public DayOfWeek Day { get; set; }
    public DateTime Date { get; set; }
    public string Value { get; set; }
}

下面的示例可以很容易地轉換為使用這樣的類,但是現在它使用了Tuple<string, string, string> 作為中間步驟,您可以在創建Tuple輕松地轉換項目以獲取更強類型的版本,例如,可以具有Tuple<DayOfWeek, DateTime, string>

這是用於將文件項讀入列表以及如何對每種項類型進行排序的示例代碼:

public static void Main()
{
    // For testing sake, I created some dummy files
    var file1 = @"D:\Public\Temp\File1.txt";
    var file2 = @"D:\Public\Temp\File2.txt";
    var file3 = @"D:\Public\Temp\File3.txt";

    // Validation that files exist and have same number 
    // of items is intentionally left out for the example

    // Read the contents of each file into a separate variable
    var days = File.ReadAllLines(file1);
    var dates = File.ReadAllLines(file2);
    var values = File.ReadAllLines(file3);

    var itemCount = days.Length;

    // The list of items read from each file
    var fileItems = new List<Tuple<string, string, string>>();

    // Add a new item for each line in each file
    for (int i = 0; i < itemCount; i++)
    {
        fileItems.Add(new Tuple<string, string, string>(
            days[i], dates[i], values[i]));
    }

    // Display the items in console window
    fileItems.ForEach(item =>
        Console.WriteLine("{0} {1} = {2}",
            item.Item1, item.Item2, item.Item3));

    // Example for how to order the items:

    // By days
    fileItems = fileItems.OrderBy(item => item.Item1).ToList();

    // By dates
    fileItems = fileItems.OrderBy(item => item.Item2).ToList();

    // By values
    fileItems = fileItems.OrderBy(item => item.Item3).ToList();

    // Order by descending
    fileItems = fileItems.OrderByDescending(item => item.Item1).ToList();

    // Show the values based on the last ordering
    fileItems.ForEach(item =>
        Console.WriteLine("{0} {1} = {2}",
            item.Item1, item.Item2, item.Item3));
}

暫無
暫無

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

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