如何将列表添加到 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_STOCK
和 Constants.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 { }
。
我有一个包含多个 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_STOCK
和 Constants.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 { }
。