我有两个MyObjectA和MyObjectB
public class MyObjectA
{
private int A_ID {get; set;}
private int B_ID {get; set;}
.
.
.
.
}
public class MyObjectB
{
private int B_ID {get; set;}
.
.
.
.
public MyObjectB (int B_ID )
{
DAL.GetMyObjectBFromDatabase(B_ID );
}
}
现在我在我的功能中尝试做的是
public void DoSomething()
{
List<MyObjectA> ListA = new List<MyObjectA>();
List<MyObjectB> ListB = new List<MyObjectB>();
ListA = DAL.GetMyObjectAListFromDatabase();
我在 x.B_ID 中的null异常下面的行中收到错误。如果我通过它调试。 ListA有计数&gt; 0和每个 x.B_ID都有值。但下面的代码执行的那一刻ListA变为null,不知道为什么。
我重复在ListA中没有空。当执行FOREACH时,ListA成为NULL。我这是为了取代C#FOREACH。我的名单对于工作是正确的。我的问题是为什么会发生这种情况
ListA.ForEach(x => {
ListB.Add(new MyObjectB(x.B_ID));
});
}
我要做的就是循环浏览ListA以获取B_ID并使用B_ID获取ListB。正如在这个linq中所做的那样。 Linq style "For Each"
请帮助我了解我出错的地方
答案 0 :(得分:0)
NullReferenceException
由x
null
引起,这意味着ListA
的成员是null
,而不是ListA
本身就是null
ListA = DAL.GetMyObjectAListFromDatabase();
。
例如,如果您调用了以下3行而不是ListA.Add(new MyObjectA());
ListA.Add(null);
ListA.Add(new MyObjectA());
。
Select
编辑:
再看看你正在做什么,你所做的正确工具是ListB = ListA.Select(x => new MyObject(x.B_ID)).ToList();
。
{{1}}