C# LINQ结果到对象初始值设定项
我在将linq结果转换为对象时遇到问题 我有一个名为C# LINQ结果到对象初始值设定项,c#,linq,C#,Linq,我在将linq结果转换为对象时遇到问题 我有一个名为Plant的类和一个包含有关它的信息(例如名称、拉丁名、栖息地等)的数据库。 我想从已执行的查询中创建一个新对象,并将其发送到应用程序的另一部分。所以我把这段代码弄乱了: using (DataClassesDataContext dc = new DataClassesDataContext()) { var sPlant = (from p in dc.Plants where p.Name == plantName select
Plant
的类和一个包含有关它的信息(例如名称、拉丁名、栖息地等)的数据库。
我想从已执行的查询中创建一个新对象,并将其发送到应用程序的另一部分。所以我把这段代码弄乱了:
using (DataClassesDataContext dc = new DataClassesDataContext())
{
var sPlant = (from p in dc.Plants where p.Name == plantName select new Plant
{
Name = p.Name,
LatinName = p.LatinName,
Habitat = p.Habitat,
LeafHarvesting = p.LeafHarvesting,
FlowerHarvesting = p.FlowerHarvesting,
FruitHarvesting = p.FruitHarvesting,
RootHarvesting = p.RootHarvesting,
Morphology = p.Morphology,
Pharmacology = p.Pharmacology,
Img = p.Img,
GPSCoordinates = p.GPSCoordinates
}
);
但它不会将结果转换为新的
Plant
对象 使用First或FirstOrDefault函数获取对象。请参阅以获取差异。如果您的查询假设返回多个结果,请使用.TOList()。如果只想获取第一行,请使用FirstOrDefault()因为Plant
似乎不是数据存储的一部分,您需要返回一个Linq to SQL可以处理的对象,然后在本地创建Plant
实例
首先查询包含所需属性的匿名对象列表,然后只创建工厂
。在末尾添加或仅检索一个工厂:
using (DataClassesDataContext dc = new DataClassesDataContext())
{
var sPlant = (from p in dc.Plants where p.Name == plantName
select new {
Name = p.Name,
LatinName = p.LatinName,
Habitat = p.Habitat,
LeafHarvesting = p.LeafHarvesting,
FlowerHarvesting = p.FlowerHarvesting,
FruitHarvesting = p.FruitHarvesting,
RootHarvesting = p.RootHarvesting,
Morphology = p.Morphology,
Pharmacology = p.Pharmacology,
Img = p.Img,
GPSCoordinates = p.GPSCoordinates
}).AsEnumerable().Select(p => new Plant
{
Name = p.Name,
LatinName = p.LatinName,
Habitat = p.Habitat,
LeafHarvesting = p.LeafHarvesting,
FlowerHarvesting = p.FlowerHarvesting,
FruitHarvesting = p.FruitHarvesting,
RootHarvesting = p.RootHarvesting,
Morphology = p.Morphology,
Pharmacology = p.Pharmacology,
Img = p.Img,
GPSCoordinates = p.GPSCoordinates
}).First();
}
发生了什么事?你收到错误信息了吗?输出是什么?它是一个select
,所以我想这会创建一个IEnumerable
或其他东西。添加一个First()
。无法从'System.Linq.IQueryable'转换为'Zielnik.Plant'类型的未处理异常'System.NotSupportedException',不允许在查询中的System.Data.Linq.dllexplicit构造单元类型“Zielnik.Plant”中发生。这将导致再次编辑相同的异常。。。我有点生疏了,我必须找到一种方法来测试它。它以“SQL Server不提供比较数据类型NText、Text、Xml和Image”结束。