如何将列表添加到 C# 中的另一个列表?

How a list can be added to another list in c#?

我有一个包含多个 listViews 的页面。我已经从 DbModels 创建了一些差异列表,并且需要将这些列表绑定到 ListViews。我想要的是 if (Particulars == Constants.TAG_OPENING_STOCK) 列表添加到 ItemsTradingDebitList 列表。

if(Particulars == Constants.TAG_PURCHASE) 另一个列表应添加到 ItemsTradingCreditList 列表。

我尝试创建一个包含值的新列表并使用 AddRange 将其添加到另一个列表。但这会带来错误 Object Reference not set to an instance of an object. list was empty

if (Particulars == Constants.TAG_OPENING_STOCK)
{
    List<string> NewList = new List<string> { Particulars, Amount };
    ItemsTradingDebitList.AddRange(NewList);              
}
if(Particulars == Constants.TAG_PURCHASE)
{
    List<string> NewList = new List<string> { Particulars, Amount };
    ItemsTradingDebitList.AddRange(NewList);
}
if(Particulars == Constants.TAG_SALES)
{
    List<string> NewList = new List<string> { Particulars, Amount };
    ItemsTradingCreditList.AddRange(NewList);
}

我的预期结果是所有添加列表的列表。我得到的是一个错误

我相信"Particulars"、"Amount"都是字符串,如果都是字符串,那么直接添加到列表中就可以了,这里不用新建列表

类似,

ItemsTradingDebitList.Add("Amount");    
ItemsTradingDebitList.Add("Particulars");   

根据问题中提到的错误,我猜你还没有初始化列表,即 ItemsTradingDebitList。如果是这种情况,那么在第一个 if 条件创建 ItemsTradingDebitList

的实例之前

喜欢

List<string> ItemsTradingDebitList = new List<string>();

这将解决您的问题,

List<string> ItemsTradingDebitList = new List<string>(); //This might be missing in your code
if (Particulars == Constants.TAG_OPENING_STOCK)
{
    ItemsTradingDebitList.Add("Amount");    
    ItemsTradingDebitList.Add("Particulars");   
}
if(Particulars == Constants.TAG_PURCHASE)
{
    ItemsTradingDebitList.Add("Amount");    
    ItemsTradingDebitList.Add("Particulars"); 
}
if(Particulars == Constants.TAG_SALES)
{
    ItemsTradingDebitList.Add("Amount");    
    ItemsTradingDebitList.Add("Particulars"); 
}

@prasad-telkikar回答正确。我只是想对您的代码添加一些评论。

看起来 Constants.TAG_OPENING_STOCKConstants.TAG_PURCHASE 是……常量。可能声明为

public static class Constants
{
    public const string TAG_OPENING_STOCK = "TAG_something";
    //...
}

所以您可以使用 switch 来改进您的代码:

var ItemsTradingDebitList = new List<string>() ;
switch (Particulars)
{
    case Constants.TAG_OPENING_STOCK:
        // ...
        break;

    case Constants.TAG_PURCHASE:
        // ...
        break;

    // etc.
}

如果它们不是常量而是 static readonly string,那么您不能在开关中使用它们,而是可以使用一系列 if { } else { }