将对象从数组写入文本文件C#

时间:2018-11-27 13:53:04

标签: c# streamwriter

此C#任务是关于根据销售人员的销售水平为销售人员创建不同级别的组,然后使用流编写器将此信息写入文本文件。

我已经完成了除Streamwriter部分之外的所有部分。到目前为止,我要做的是创建文件,但是没有输出。 当我运行此命令时,控制台中的内容正确,但文本文件已修改但为空白。

流作家在底部。

´

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; 
using System.Threading.Tasks;

namespace Inlämningsuppgift2
{

// Emplooyeklassen where names, personal info, district och sold items sparas och hämtas

class Emplooye
{

    String namn;
    int personnummer;
    string distrikt;
    int såldaartiklar;
    int säljnivå;


    public Emplooye(string namn, int personnummer, string distrikt, int såldaartiklar)
    {
        this.namn = namn;
        this.personnummer = personnummer;
        this.distrikt = distrikt;
        this.såldaartiklar = såldaartiklar;

    }

    public string Name
    {
        get { return namn; }
        set { namn = value; }
    }


    public int PersonNummer
    {
        get { return personnummer; }
        set { personnummer = value; }
    }


    public string Distrikt
    {
        get { return distrikt; }
        set { distrikt = value; }
    }


    public int AmountSold
    {
        get { return såldaartiklar; }
        set { såldaartiklar = value; }
    }

    public int SäljNivå
    {
        get { return säljnivå; }
        set { säljnivå = value; }
    }
}
 }

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using Inlämningsuppgift2;
 using System.IO;

  namespace ConsoleApp3

{
    class Säljlista
    {
        static void Main(string[] args)
        {



            List<Emplooye> ObjSeller = new List<Emplooye>();
            List<Emplooye> group1 = new List<Emplooye>();
            List<Emplooye> group2 = new List<Emplooye>();
            List<Emplooye> group3 = new List<Emplooye>();

            ObjSeller.Add(new Emplooye("Oscar Norberg", 961111, "Täby", 140));
            ObjSeller.Add(new Emplooye("jonas okembia", 970912, "Uppsala", 70));
            ObjSeller.Add(new Emplooye("Mille vega", 981212, "Danderyd", 40));
            ObjSeller.Add(new Emplooye("Isak friisjespesen", 991132, "Skåne", 80));
            ObjSeller.Add(new Emplooye("Maja olofsson", 974132, "Täby", 123));
            ObjSeller.Add(new Emplooye("Annmarie norberg", 944432, "Täby", 230));
            ObjSeller.Add(new Emplooye("Ulla persson", 9312332, "Uppland", 124));
            ObjSeller.Add(new Emplooye("Christer Nilsen", 9988332, "Vallentuna", 444));

            Console.WriteLine("Namn    Personnummer     Distrikt   Antal");

            //Here the employees gets sorted in groups depending how much they sold for.


            foreach (Emplooye e in ObjSeller)
            {
                if (e.AmountSold > 0 && e.AmountSold <= 90)

                {
                    group1.Add(e);

                }

                else if (e.AmountSold > 90 && e.AmountSold <= 200)
                {
                    group2.Add(e);
                }
                else
                {
                    group3.Add(e);
                }

            }


            group1.Sort(delegate (Emplooye t1, Emplooye t2)
            { return (t1.AmountSold.CompareTo(t2.AmountSold)); }
            );

            for (int i = 0; i < group1.Count; i++)

            {

                string name = group1.ElementAt(i).Name;
                int pnr = group1.ElementAt(i).PersonNummer;
                String district = group1.ElementAt(i).Distrikt;
                int amountsold = group1.ElementAt(i).AmountSold;

                Console.WriteLine(name + ": " + pnr + " - " + district + " - " + amountsold);

            }
            Console.WriteLine("salesmen at level 1" + ": " + group1.Count);
            Console.WriteLine("");


            group2.Sort(delegate (Emplooye t1, Emplooye t2)
            { return (t1.AmountSold.CompareTo(t2.AmountSold)); }
           );

            for (int i = 0; i < group2.Count; i++)

            {

                string name = group2.ElementAt(i).Name;
                int pnr = group2.ElementAt(i).PersonNummer;
                String district = group2.ElementAt(i).Distrikt;
                int amountsold = group2.ElementAt(i).AmountSold;

                Console.WriteLine(name + ": " + pnr + " - " + district + " - " + amountsold);

            }
            Console.WriteLine("salesmen at level 2 2" + ": " + group2.Count);
            Console.WriteLine("");


            group3.Sort(delegate (Emplooye t1, Emplooye t2)
            { return (t1.AmountSold.CompareTo(t2.AmountSold)); }
       );

            for (int i = 0; i < group3.Count; i++)

            {

                string name = group3.ElementAt(i).Name;
                int pnr = group3.ElementAt(i).PersonNummer;
                String district = group3.ElementAt(i).Distrikt;
                int amountsold = group3.ElementAt(i).AmountSold;

                Console.WriteLine(name + ": " + pnr + " - " + district + " - " + amountsold);

            }
            Console.WriteLine("salesmen at level 3" + ": " + group3.Count);
            Console.WriteLine("");


        StreamWriter SW = new StreamWriter("important.txt");
        foreach(Emplooye i in group1)
        {

            SW.WriteLine(group1.ToString());

           foreach(Emplooye i in group2)
        {

            SW.WriteLine(group2.ToString());
        } 
            foreach(Emplooye i in group3)
        {

            SW.WriteLine(group3.ToString());



    }
}





    }

1 个答案:

答案 0 :(得分:3)

您没有关闭流写入器,因此它正在将输出缓冲在内存中,但未写入文件。尝试“使用”语句:

using(StreamWriter SW = new StreamWriter("important.txt"))
{
    foreach(Emplooye i in group1)
    {
        SW.WriteLine(i.ToString());
    }

    foreach(Emplooye i in group2)
    {
        SW.WriteLine(i.ToString());
    } 

    foreach(Emplooye i in group3)
    {
        SW.WriteLine(i.ToString());
    }
}