У меня есть пример таких данных, данные находятся в текстовом файле (.txt), извините, я получил этот тип файла, если это excel или csv, возможно, это будет проще
Редактировать: я делаю консольное приложение с С#
FamilyID;name;gender;DOB;Place of birth;status
1;nicky;male;01-01-1998;greenland;married
1;sonia;female;02-02-1995;greenland;married
2;dicky;male;04-01-1995;bali;single
3;redding;male;01-05-1996;USA;single
3;sisca;female;05-03-1994;australia;married
я хочу взять конкретный столбец из этих данных, например, я хочу взять FamilyID, имя и статус.
Я уже пробовал некоторый код для чтения данных, получения всех данных и перечисления их в новый текстовый файл.
Цель состоит в том, чтобы создать новый текстовый файл на основе идентификатора семьи и взять только определенные столбцы.
Проблема в том, что я не могу взять конкретный столбец, который мне нужен, из текстового файла (не знаю, как выбрать несколько столбцов в коде, который я пишу)
DateTime date = DateTime.Now;
string tgl = date.Date.ToString("dd");
string bln = date.Month.ToString("d2");
string thn = date.Year.ToString();
string tglskrg = thn + "/" + bln + "/" + tgl;
string filename = ("C:\\Users\\Documents\\My Received Files\\exampledata.txt");
string[] liness = File.ReadAllLines(filename);
string[] col;
var lines = File.ReadAllLines(filename);
var groups = lines.Skip(1)
.Select(x => x.Split(';'))
.GroupBy(x => x[0]).ToArray();
foreach (var group in groups)
{
Console.WriteLine(group);
File.WriteAllLines(@"C:\\Users\\Documents\\My Received Files\\exampledata_"+group.Key+".txt", group.Select(x => string.Join(";", x)));
}
может кто поможет? Спасибо
попробуй это.
var list = new List<String>();
list.Add("FamilyID;name;gender;DOB;Place of birth;status");
list.Add("1;nicky;male;01-01-1998;greenland;married");
list.Add("1;sonia;female;02-02-1995;greenland;married");
list.Add("2;dicky;male;04-01-1995;bali;single");
list.Add("3;redding;male;01-05-1996;USA;single");
list.Add("3;sisca;female;05-03-1994;australia;married");
var group = from item in list.Skip(1)
let splitItem = item.Split(';', StringSplitOptions.RemoveEmptyEntries)
select new
{
FamilyID = splitItem[0],
Name = splitItem[1],
Status = splitItem[5],
};
foreach(var item in group.ToList())
{
Console.WriteLine($"Family ID: {item.FamilyID}, Name: {item.Name}, Status: {item.Status}");
}
Один из способов приблизиться к этому — записать детали в структуру данных, а затем записать необходимые детали в файл. Например,
public class Detail
{
public int FamilyID{get;set;}
public string Name{get;set;}
public string Gender{get;set;}
public DateTime DOB{get;set;}
public string PlaceOfBirth{get;set;}
public string Status{get;set;}
}
Теперь вы можете написать метод, который анализирует строку на основе разделителя и возвращает IEnumerable.
public IEnumerable<Detail> Parse(string source,char delimiter)
{
return source.Split(new []{Environment.NewLine},StringSplitOptions.RemoveEmptyEntries)
.Skip(1)
.Select(x=>
{
var detail = x.Split(new []{delimiter});
return new Detail
{
FamilyID = Int32.Parse(detail[0]),
Name = detail[1],
Gender = detail[2],
DOB = DateTime.Parse(detail[3]),
PlaceOfBirth = detail[4],
Status = detail[5]
};
}
);
}
Клиентский звонок
Parse(stringFromFile,';');
Выход
Теперь вы можете выбрать и записать детали, которые хотите записать в выходной файл из коллекции.
Вы можете использовать его независимо от console/winform/wpf/web. Обратите внимание, что приложенное изображение является представлением вывода. Вы можете использовать консольное приложение для вывода коллекции или записи в файл
хм, это применимо для консольного приложения?