[英]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.