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

时间:2019-05-17 08:25:46

标签: c# list itemssource

我的页面上有多个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);
}

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

2 个答案:

答案 0 :(得分:4)

我相信“详细信息”,“金额”是字符串,如果两者都是字符串,那么您可以直接将其添加到列表中,这里无需创建新列表

类似的东西

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

根据有问题的错误,我想您尚未初始化列表,即ItemsTradingDebitList。如果是这样,则在条件成立之前先创建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"); 
}

答案 1 :(得分:0)

@ 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 { }