web-dev-qa-db-ja.com

List <T>からtxtへの保存

プログラムで2つのテキストファイルから1つのList<T>List<T>は重複をソートおよびクリーニングしています。

List<T>(ソートおよびクリーニング後)txtファイルに保存します。

しかし、結果のtxtファイルを見ると、次のメッセージが見つかりました。

System.Collections.Generic.List`1 [System.String]

誰も私がこのエラーを修正する方法を知っていますか?

ここに私のコードがあります:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Uniqpass
{
    class Program
    {
        static void Main(string[] args)
        {

            String pfad = "C:\\Dokumente und Einstellungen\\Bektas\\Desktop\\test\\";
            String pfad2 = "C:\\Dokumente und Einstellungen\\Bektas\\Desktop\\test\\";
            String speichern = "C:\\Dokumente und Einstellungen\\Bektas\\Desktop\\test\\ausgabe.txt";
            String datei = "text1.txt";
            String datei2 = "text2.txt";

            try
            {

                //Einlesen TxT 1
                List<String> pass1 = new List<String>();
                StreamReader sr1 = new StreamReader(pfad + datei);
                while (sr1.Peek() > -1)
                {

                    pass1.Add(sr1.ReadLine());
                }
                sr1.Close();
                //Einlesen TxT 2
                StreamReader sr2 = new StreamReader(pfad2 + datei2);
                while (sr2.Peek() > -1)
                {
                    pass1.Add(sr2.ReadLine());
                }
                sr2.Close();

                List<String> ausgabeListe = pass1.Distinct().ToList();
                ausgabeListe.Sort();

                ausgabeListe.ForEach(Console.WriteLine);

                StreamWriter file = new System.IO.StreamWriter(speichern);
                file.WriteLine(ausgabeListe);
                file.Close();


            }
            catch (Exception)
            {
                Console.WriteLine("Error");
            }

            Console.ReadKey();
        }
    }
}
27
Jon Cylo

便利な小さなメソッドがあります File.WriteAllLines -StreamWriterを自分で開く必要はありません:

.net 4の場合:

File.WriteAllLines(speichern, ausgabeListe);

.net 3.5の場合:

File.WriteAllLines(speichern, ausgabeListe.ToArray());

同様に、文字列の配列を返す File.ReadAllLines で読み取りロジックを置き換えることができます(List<string>が必要な場合は、ToList()を使用します)。

したがって、実際には、完全なコードは次のように削減できます。

// Input
List<String> data = File.ReadAllLines(pfad + datei)
    .Concat(File.ReadAllLines(pfad2 + datei2))
    .Distinct().ToList();

// Processing
data.Sort(); 

// Output
data.ForEach(Console.WriteLine); 
File.WriteAllLines(speichern, data);
70
Heinzi

リストのToString表現を書き込むのはこの行で、結果として得られるテキスト行になります。

StreamWriter file = new System.IO.StreamWriter(speichern);
file.WriteLine(ausgabeListe);
file.Close();

代わりに、各行を書きます。

StreamWriter file = new System.IO.StreamWriter(speichern);
ausgabeListe.ForEach(file.WriteLine);
file.Close();
10
Matten

リストをループして、各行を個別に書き込みます。

StreamWriter file = new System.IO.StreamWriter(speichern);
foreach(string line in ausgabeListe)
    file.WriteLine(line);
file.Close();
1
itsme86

以下のようなLINQを使用して、各行をテキストファイルに書き込みます。

var myList=new List<string>
{
    "Hello",
    "World"
};
using (var file = new StreamWriter("myfile.txt"))
{
    myList.ForEach(v=>file.WriteLine(v));
}
0
LENG UNG

リストオブジェクトをファイルに書き込んでいるので、タイプ名が表示されます。

ForEachを使用してコンテンツをコンソールに書き込むのと同じように、ausgabeListeを反復処理して、リスト内の各アイテムに対してWriteLine()を呼び出す必要があります。

0
Jay
StreamWriter file = new System.IO.StreamWriter(speichern);
foreach(string x in ausgabeListe)
    file.WriteLine(x);
file.Close();
0
watbywbarif

以下のコードを試してください:

StreamWriter writer = new StreamWriter("C:\\Users\\Alchemy\\Desktop\\c#\\InputFileFrmUser.csv");
list = new List<Product>() { new Product() { ProductId=1, Name="Nike 12N0",Brand="Nike",Price=12000,Quantity=50},
        new Product() { ProductId =2, Name = "Puma 560K", Brand = "Puma", Price = 120000, Quantity = 55 },
        new Product() { ProductId=3, Name="WoodLand V2",Brand="WoodLand",Price=21020,Quantity=25},
        new Product() { ProductId=4, Name="Adidas S52",Brand="Adidas",Price=20000,Quantity=35},
        new Product() { ProductId=5, Name="Rebook SPEED2O",Brand="Rebook",Price=1200,Quantity=15}};

foreach (var x in list) {
    string wr = x.ProductId + " " + x.Name + "" + x.Brand + " " + x.Quantity + " " + x.Price;
    writer.Flush();
    writer.WriteLine(wr);

}
Console.WriteLine("--------ProductList Updated SucessFully----------------");
0
Prabhakaran M