C# 列表内的列表错误为';对象引用未设置为对象的实例;
我有一个七个日期的列表,一周中的每一天一个,每个日期都有一个当天发生的事件列表,一天中不可能有任何事件<代码>日期是一个由7个C# 列表内的列表错误为';对象引用未设置为对象的实例;,c#,list,asp.net-core,C#,List,Asp.net Core,我有一个七个日期的列表,一周中的每一天一个,每个日期都有一个当天发生的事件列表,一天中不可能有任何事件日期是一个由7个日期时间天组成的数组。我的代码如下所示: var-dateData=新列表(新列表[7]); 对于(int i=0;it.Date.Equals(日期[i].ToString(“yyyy-MM-dd”)) .ToList()); } 然而,我得到了以下信息和错误: 对象引用未设置为对象的实例。在dateData[i] new List[7]创建一个由List对象组成的7
日期时间
天组成的数组。我的代码如下所示:
var-dateData=新列表(新列表[7]);
对于(int i=0;i<7;i++)
{
dateData[i].AddRange(_context.Timelineinfo
其中(t=>t.Date.Equals(日期[i].ToString(“yyyy-MM-dd”))
.ToList());
}
然而,我得到了以下信息和错误:
对象引用未设置为对象的实例。在dateData[i]
new List[7]
创建一个由List
对象组成的7元素数组,该数组不包含任何值。它相当于以下表达式:
new List<Timelineinfo>[]
{
null,
null,
null,
null,
null,
null,
null,
}
新列表[]
{
无效的
无效的
无效的
无效的
无效的
无效的
无效的
}
因此,这将为该类型创建一个包含7个元素的数组,但每个数组元素的值尚未初始化。所以你只分配房间,但没有价值
将此数组传递给构造函数newlist(array)
只会将那些未初始化的数组元素复制到正在创建的新列表中。因此,该列表还将包含未初始化的列表元素
为了能够使用这些元素,您必须首先初始化它们。由于您已经在项目上循环,因此可以在循环体中执行此操作:
var dateData = new List<List<Timelineinfo>>(new List<Timelineinfo>[7]);
for (int i = 0; i < 7; i++)
{
dateData[i] = new List<Timelineinfo>();
dateData[i].AddRange(_context.Timelineinfo
.Where(t => t.Date.Equals(dates[i].ToString("yyyy-MM-dd")))
.ToList());
}
var-dateData=新列表(新列表[7]);
对于(int i=0;i<7;i++)
{
dateData[i]=新列表();
dateData[i].AddRange(_context.Timelineinfo
其中(t=>t.Date.Equals(日期[i].ToString(“yyyy-MM-dd”))
.ToList());
}
在您的特定情况下,您将创建一个列表,然后直接向该列表添加另一个列表的元素,因此您也可以直接将该列表分配给列表元素:
for (int i = 0; i < 7; i++)
{
dateData[i] = _context.Timelineinfo
.Where(t => t.Date.Equals(dates[i].ToString("yyyy-MM-dd")))
.ToList();
}
for(int i=0;i<7;i++)
{
dateData[i]=\u context.Timelineinfo
其中(t=>t.Date.Equals(日期[i].ToString(“yyyy-MM-dd”))
.ToList();
}
新建列表[7]
创建一个由列表
对象组成的7元素数组,该数组不包含任何值。它相当于以下表达式:
new List<Timelineinfo>[]
{
null,
null,
null,
null,
null,
null,
null,
}
新列表[]
{
无效的
无效的
无效的
无效的
无效的
无效的
无效的
}
因此,这将为该类型创建一个包含7个元素的数组,但每个数组元素的值尚未初始化。所以你只分配房间,但没有价值
将此数组传递给构造函数newlist(array)
只会将那些未初始化的数组元素复制到正在创建的新列表中。因此,该列表还将包含未初始化的列表元素
为了能够使用这些元素,您必须首先初始化它们。由于您已经在项目上循环,因此可以在循环体中执行此操作:
var dateData = new List<List<Timelineinfo>>(new List<Timelineinfo>[7]);
for (int i = 0; i < 7; i++)
{
dateData[i] = new List<Timelineinfo>();
dateData[i].AddRange(_context.Timelineinfo
.Where(t => t.Date.Equals(dates[i].ToString("yyyy-MM-dd")))
.ToList());
}
var-dateData=新列表(新列表[7]);
对于(int i=0;i<7;i++)
{
dateData[i]=新列表();
dateData[i].AddRange(_context.Timelineinfo
其中(t=>t.Date.Equals(日期[i].ToString(“yyyy-MM-dd”))
.ToList());
}
在您的特定情况下,您将创建一个列表,然后直接向该列表添加另一个列表的元素,因此您也可以直接将该列表分配给列表元素:
for (int i = 0; i < 7; i++)
{
dateData[i] = _context.Timelineinfo
.Where(t => t.Date.Equals(dates[i].ToString("yyyy-MM-dd")))
.ToList();
}
for(int i=0;i<7;i++)
{
dateData[i]=\u context.Timelineinfo
其中(t=>t.Date.Equals(日期[i].ToString(“yyyy-MM-dd”))
.ToList();
}
您需要添加dateData[i]=new List()代码>在linq之前。您需要添加dateData[i]=new List()代码>临刑前。感谢您提供了如此全面和有益的回答!我照你说的做了,效果很好。谢谢你这么彻底和有用的回答!我照你说的做了,结果成功了。