У меня есть текстовый файл журнала, и я хочу сделать его резюме. Ниже приведен мой пример текстового файла журнала.
Date |ID |Folder |Doc |FileName |NoOfAcct|
20181024 |1 |ABC.20181101.CGLOG |test |xxxx |12
20181024 |2 |CDE.20181013.CGLOG |home |XyyX |2
20181024 |3 |WQE.20181013.CGLOG |office|xy |5
20181024 |4 |ABC.20181013.CGLOG |store |yy |10
Я хочу сделать сводку об этом и отделить ( группу ) от Folder
и ID
. Например, я хочу скопировать Folder
ABC.20181101.CGLOG с ID
номером 1 в новый текстовый файл . Я делаю код, но я застрял в нем.
using System;
using System.IO;
namespace HLB
{
internal class Program
{
private static void Main(string[] args)
{
string path1 = "";
if (path1 == "")
path1 = "F:\\Work\\FLP Code\\test\\log_test.txt";
string[] strArray1 = File.ReadAllLines(path1);
string fileName = Path.GetFileName(path1);
string directoryName = Path.GetDirectoryName(path1);
if (fileName.Contains("%ABC%"))
{
Console.WriteLine("Test!");
}
}
}
}
Может ли кто-нибудь помочь мне привести пример для меня? Заранее спасибо.
Привет всем, ниже мой новый код:
using System;
using System.IO;
using System.Linq;
namespace HLB
{
internal class Program
{
private static void Main(string[] args)
{
// Our initial data
string path1 = "";
if (path1 == "")
path1 = "F:\\Work\\FLP Code\\test\\log_test.txt";
var data = File
.ReadLines(path1)
.Skip(1) // Skip 1st record (header)
.Where(line => !string.IsNullOrWhiteSpace(line)) // remove empty lines, if any
.Select(line => line.Split('|')) // split each line by |
.Select(items => new {
Raw = string.Join("|", items), // Raw data as it is in the file
Date = items[0].Trim(),
ID = items[1].Trim(),
Folder = items[2].Trim(),
Doc = items[3].Trim(),
FileName = items[4].Trim(),
NoOfAct = items[5].Trim(),
});
// Now, it's quite easy to represent the data as we want.
// And we want to *group by* `Folder` and `ID`: just one GroupBy operation
var result = data
.GroupBy(item => new {
ID = item.ID,
Folder = item.Folder
})
.Select(chunk =>
$"File {chunk.Key.Folder + "_" + chunk.Key.ID}.txt :\r\n {string.Join(Environment.NewLine + " ", chunk.Select(item => item.Raw))}");
foreach (var record in result)
Console.WriteLine(record);
File.WriteAllLines(@"F:\\Work\\FLP Code\\test\\MyNewTextFile.txt", data
.Where(item => item.ID == "1" &&
item.Folder == "ABC.20181101.CGLOG")
.Select(item => item.Raw));
}
}
}