首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq to FileHelpers类

Linq to FileHelpers类
EN

Stack Overflow用户
提问于 2013-05-02 00:18:15
回答 1查看 517关注 0票数 0

我正在尝试获取一个文件的linq查询的结果。我创建了一个与我创建的FileHelpers类类型相同的数组,然后查询数据并将值分配给我刚刚创建的数组。

我得到以下错误:

代码语言:javascript
复制
Object reference not set to an instance of an object.

奇怪的是,发出错误的项是获得赋值的项。不确定为什么会发生这种情况:

代码语言:javascript
复制
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);

包括产品类别:

代码语言:javascript
复制
[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;


}  
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-02 00:28:56

for循环中使用items[i]之前,必须先对其进行初始化。问题是您已经创建了数组,但是它的各个元素都是null。我猜在使用Select()进行了一些投影之后,您可能希望将linq查询的返回值赋给这个数组。

虽然我不知道你的类的细节,但我想你会用下面的几行代码:

代码语言:javascript
复制
producdt[] items = (from d in dbContext.Products
                   select new producdt(){ 
                                          Field1 = d.Field1, 
                                          Field2 = d.Field2, 
                                          Field3 = d.Field3, 
                                          Field4 = d.Field4
                                         }).ToArray();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16322026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档