我正在尝试获取一个文件的linq查询的结果。我创建了一个与我创建的FileHelpers类类型相同的数组,然后查询数据并将值分配给我刚刚创建的数组。
我得到以下错误:
Object reference not set to an instance of an object.奇怪的是,发出错误的项是获得赋值的项。不确定为什么会发生这种情况:
NorthwindEntities dbContext = new NorthwindEntities();
var q = from d in dbContext.Products
select d;
producdt[] items = new producdt[q.Count()];
for (int i = 0; i < q .Count(); i++)
{
items[i].Field1 = q.ToList()[i].ProductName;
}
FileHelperEngine<producdt> engine = new FileHelperEngine<producdt>();
engine.WriteFile("test.text", items);包括产品类别:
[FixedLengthRecord(FixedMode.ExactLength)]
public sealed class producdt
{
[FieldFixedLength(10)]
public String Field1;
[FieldFixedLength(10)]
public String Field2;
[FieldFixedLength(10)]
public String Field3;
[FieldFixedLength(10)]
public String Field4;
[FieldFixedLength(10)]
public String Field5;
} 发布于 2013-05-02 00:28:56
在for循环中使用items[i]之前,必须先对其进行初始化。问题是您已经创建了数组,但是它的各个元素都是null。我猜在使用Select()进行了一些投影之后,您可能希望将linq查询的返回值赋给这个数组。
虽然我不知道你的类的细节,但我想你会用下面的几行代码:
producdt[] items = (from d in dbContext.Products
select new producdt(){
Field1 = d.Field1,
Field2 = d.Field2,
Field3 = d.Field3,
Field4 = d.Field4
}).ToArray();https://stackoverflow.com/questions/16322026
复制相似问题