C#类列表和属性

C#类列表和属性,c#,list,class,C#,List,Class,我对编程非常陌生,所以对你们大多数人来说,这可能是一个愚蠢的问题,但是,既然我已经尝试在谷歌上搜索,下面是: 我创建了一个包含一些属性和2个方法的类,其中一些属性应该用于第一个方法,另一个用于第二个方法 这两个方法都返回一个列表,我的问题是这两个列表都返回所有属性。不知道为什么,因为我没有在两种方法中都使用它们。。。以下是一个例子: class orders { public string invoiceID { get; set; } public string employe

我对编程非常陌生,所以对你们大多数人来说,这可能是一个愚蠢的问题,但是,既然我已经尝试在谷歌上搜索,下面是:

我创建了一个包含一些属性和2个方法的类,其中一些属性应该用于第一个方法,另一个用于第二个方法

这两个方法都返回一个列表,我的问题是这两个列表都返回所有属性。不知道为什么,因为我没有在两种方法中都使用它们。。。以下是一个例子:

class orders
{
    public string invoiceID { get; set; }
    public string employee { get; set; }
    public string store { get; set; }
    public string client { get; set; }
    public string invoiceDate { get; set; }
    public string total { get; set; }
    public string totalYear { get; set; }
    public string year { get; set; }

public static List<orders> getOrders()
{
    string sSQL = "bla bla bla huge query "

    DBConnect connect = new DBConnect();
    DataTable dt = new DataTable();
    dt = connect.getBD(sSQL);

    List<orders> o = new List<orders>();

    for (int i = 0; i < dt.Rows.Count; i++)
    {
        orders ord = new orders();

        ord.invoiceID = dt.Rows[i]["invoiceid"].ToString();
        ord.employee = dt.Rows[i]["empname"].ToString();
        ord.store = dt.Rows[i]["storename"].ToString();
        ord.client = dt.Rows[i]["clientname"].ToString();
        ord.invoiceDate = ((DateTime)dt.Rows[i]["invoicedate"]).ToString("dd-MM-yyyy");
        ord.total = dt.Rows[i]["total"].ToString();

        o.Add(ord);
    }

    return o;
类命令
{
公共字符串invoiceID{get;set;}
公共字符串employee{get;set;}
公共字符串存储{get;set;}
公共字符串客户端{get;set;}
公共字符串invoiceDate{get;set;}
公共字符串总计{get;set;}
公共字符串totalYear{get;set;}
公共字符串年份{get;set;}
公共静态列表getOrders()
{
string sSQL=“bla bla bla巨大查询”
DBConnect connect=新的DBConnect();
DataTable dt=新的DataTable();
dt=connect.getBD(sSQL);
列表o=新列表();
对于(int i=0;i
因此,在这种方法中,我没有使用公共属性年和totalYear,但它们仍然出现在列表中:(

我做错了什么

提前感谢,并对noob的问题表示歉意

更新1(第二种方法)

publicstaticlist getTotalYearInvoices()
{
DateTime date=DateTime.Now;
int year=日期。年份;
列表o=新列表();
对于(int i=2009;i
我不太明白你的意思,但是

你的财产:

public string totalYear { get; set; }
public string year { get; set; }
设置为“公共”,因此它们将显示在以下列表中:

 List<orders> getOrders()
List getOrders()
如果你不想让他们出现,就把他们保密

此外,如果不希望显示所有订单属性,则 可以创建多个类并从中继承

试想一下,您正在重新调整具有所有属性的订单列表 设置为public,因此它们将始终出现,尽管它们没有 正在初始化或具有值


您应该创建两个不同的类。一个用于订单,另一个用于订单日期,如果您不希望它们总是出现的话。

getOrders方法返回的是订单列表。Orders类具有year和totalYear属性,即使您没有设置它们,在实例化这个类的实例


顺便说一句,我建议您使用类型名称,也可以使用单数名词(即Order而不是orders)。

您可以将类
orders
分为两类: (你为什么不这么做?)

公共类基序
{
公共字符串invoiceID{get;set;}
公共字符串employee{get;set;}
公共字符串存储{get;set;}
公共字符串客户端{get;set;}
公共字符串invoiceDate{get;set;}
公共字符串总计{get;set;}
公共静态列表getOrders()
{
//您的实现
}
}
然后你就可以订约会单了

public class DateOrders
{
  public string totalYear { get; set; }
  public string year { get; set; }

 public static List<DateOrders> getTotalYearInvoices()
 {
    //your implementation
 } 
}
公共类日期顺序
{
公共字符串totalYear{get;set;}
公共字符串年份{get;set;}
公共静态列表getTotalYearInvoices()
{
//您的实现
} 
}

你的问题不是你的代码你的问题是你认为你在做什么:)
编写OO代码是为了了解OO是什么以及它是如何工作的

但是现在,对于您的“问题”,您肯定会看到您的属性,因为它们都是
公共的
,所以让我们根据您的代码深入到OO

让我们从您的类名开始
订单

它应该是
Order
,因为此类型的每个对象都是单个订单

现在让我们看看哪些属性只与订单相关

public string invoiceID { get; set; }
public string employee { get; set; }
public string store { get; set; }
public string client { get; set; }
public string invoiceDate { get; set; }
public string total { get; set; }
很好,现在我们有了所有相关的属性

之后,我们可以继续使用您的方法

您的第一个方法
公共静态列表getOrders()

我会将其重命名为
公共静态列表getAllOrders()

getAll,因为我在您提供的代码中看不到限制,所以您的列表将正确包含数据库中的所有订单,否则您应该将该限制添加到方法名称(示例getOpenOrders())

现在确定第二种方法

现在它来了,我们需要两个属性

public string totalYear { get; set; }
public string year { get; set; }
是吗?不是真的 现在你有多种选择

  • 创建一个单独的类,该类将包含此属性
  • 使用
  • 使用
    字典
  • 使用
    数据表

这是您自己的决定…

考虑到您试图将orders类视为某种发票系统或购物车,因此我将有两个类用于此

public class InvoiceSystem
{
    private List<Invoice> currentOrders;

    public InvoiceSystem()
    {
       currentOrders = new List<Invoice>();
    }

    public void Populate()
    {
        //fill your list from the database
    }

    public void Save()
    {
       //Save list back to database
    }

    public List<Invoice> GetInvoices(/*perhaps something to filter */ )
    {
         // return filtered list, or entire list.
    }

    public decimal GetTotalForYear(int year)
    { 
        // iterate through list (or use linq) to get total and return it
    }
}




public class Invoice
{
    public int      InvoiceID { get; set; }
    public string   Employee { get; set; }
    public string   Store { get; set; }
    public string   Client { get; set; }
    public DateTime InvoiceDate { get; set; }
    public decimal  Total { get; set; }
}
公共类发票系统
{
私人订单;
公共发票系统()
{
当前订单=n
public string totalYear { get; set; }
public string year { get; set; }
public class InvoiceSystem
{
    private List<Invoice> currentOrders;

    public InvoiceSystem()
    {
       currentOrders = new List<Invoice>();
    }

    public void Populate()
    {
        //fill your list from the database
    }

    public void Save()
    {
       //Save list back to database
    }

    public List<Invoice> GetInvoices(/*perhaps something to filter */ )
    {
         // return filtered list, or entire list.
    }

    public decimal GetTotalForYear(int year)
    { 
        // iterate through list (or use linq) to get total and return it
    }
}




public class Invoice
{
    public int      InvoiceID { get; set; }
    public string   Employee { get; set; }
    public string   Store { get; set; }
    public string   Client { get; set; }
    public DateTime InvoiceDate { get; set; }
    public decimal  Total { get; set; }
}