C# Linq到文件助手类
我试图在文件中获取linq查询的结果。我创建了与我创建的FileHelpers类相同类型的和数组,然后查询数据并将值分配给我刚刚创建的数组 我得到以下错误:C# Linq到文件助手类,c#,.net,linq,file-io,filehelpers,C#,.net,Linq,File Io,Filehelpers,我试图在文件中获取linq查询的结果。我创建了与我创建的FileHelpers类相同类型的和数组,然后查询数据并将值分配给我刚刚创建的数组 我得到以下错误: Object reference not set to an instance of an object. 奇怪的是,发出错误的项目就是得到赋值的项目。不确定为什么会发生这种情况: NorthwindEntities dbContext = new NorthwindEntities(); var q = from d i
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);
在for循环中使用项[i]之前,必须对其进行初始化。问题是您已经创建了数组,但其单个元素为空。我想在使用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();
在for循环中使用项[i]之前,必须对其进行初始化。问题是您已经创建了数组,但其单个元素为空。我想在使用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();
也就是说,假设productdt是最有可能的引用类型,尽管它有助于准确地知道错误发生在哪一行。WriteFile方法接受IEnumerable,因此您也可以避免ToArray。var items=来自dbContext中的d。产品选择新的producdt{Name=d.Name};这就是我在尝试上面的赋值时出现的错误:错误6无法将类型“AnonymousType1[]”隐式转换为“producdt”@user2275571:您可以在问题中包含productdt类的主体吗?检查上面…我添加了类,即假设productdt是最有可能的引用类型,虽然这有助于准确地知道错误发生在哪一行。WriteFile方法接受IEnumerable,因此您也可以避免ToArray。var items=来自dbContext中的d。产品选择新的producdt{Name=d.Name};这是我在尝试上面的赋值时出现的错误:错误6无法将类型“AnonymousType1[]”隐式转换为“producdt”@user2275571:您可以在问题中包含producdt类的主体吗?检查上面的内容…我已将classIs producdt添加为对象或记录?此外,这也可以得到极大的优化,您可以在这里访问数据库三次,而实际上一次就可以完成。错误出现在行项目[i].field1=q.ToList[i].ProductName;让我重新表述一下-producdt是一个类还是一个记录?producdt是一个类:[FixedLength RecordFixedMode.ExactLength]公共密封类producdt{[FieldFixedLength10]公共字符串字段1;[FieldFixedLength10]公共字符串字段2;[FieldFixedLength10]公共字符串字段3;[FieldFixedLength10]公共字符串字段4;[FieldFixedLength10]public String Field5;}@dotNET建议的解决方案将为您完成这项工作。不仅如此,它更有效,因为您只需到DB进行一次行程…在您至少进行3次行程的那一分钟,producdt是一个对象还是一个记录?此外,这也可以得到极大的优化,您可以在这里访问数据库三次,而实际上一次就可以完成。错误出现在行项目[i].field1=q.ToList[i].ProductName;让我重新表述一下-producdt是一个类还是一个记录?producdt是一个类:[FixedLength RecordFixedMode.ExactLength]公共密封类producdt{[FieldFixedLength10]公共字符串字段1;[FieldFixedLength10]公共字符串字段2;[FieldFixedLength10]公共字符串字段3;[FieldFixedLength10]公共字符串字段4;[FieldFixedLength10]public String Field5;}@dotNET建议的解决方案将为您完成这项工作。不仅如此,它更有效,因为您只需到DB进行一次行程……在这一分钟,您至少要进行三次行程。