我的select语句不返回整个Customer对象,只返回 utrustningNr 和 beskrivning 。如何以正确的方式返回而不会出现此错误:
Cannot implicitly convert type 'System.Collections.Generic.List<AnonymousType#1>' to 'System.Collections.Generic.List<fjallvick.utrustning>
public List<utrustning> searchEquipment(string equipmentNr)
{
var queryEquipment = from utrustning in globalDBConnString.context.utrustnings
where utrustning.utrustningNr == equipmentNr
select (new { utrustning.utrustningNr, utrustning.beskrivning });
return queryEquipment.ToList();
}
答案 0 :(得分:2)
问题是您的select
子句为每个项目创建了一个新的匿名类型,而不是新的utrustning
。你可能想要这样的东西:
var queryEquipment = from utrustning in globalDBConnString.context.utrustnings
where utrustning.utrustningNr == equipmentNr
select new utrustning {
utrustningNr = utrustning.utrustningNr,
beskrivning = utrustning.beskrivning
};
或者,如果globalDBConnString.context.utrustnings
实际上已经返回了一系列ustrustning
值,您可以使用:
return globalDBConnString.context.utrustnings
.Where(u => u.utrustningNr == equipmentNr)
.ToList();
如果希望只返回两个属性,那么最好创建一个只有具有这两个属性的新类型 - 然后更改返回类型方法,并更改select
子句以使用它。
旁注:如果遵循正常的.NET命名约定,您的代码将更容易理解。
答案 1 :(得分:2)
执行此操作时,您正在选择新的匿名类型:select (new { utrustning.utrustningNr, utrustning.beskrivning })
您可以通过执行以下操作来选择特定类型:
public List<utrustning> searchEquipment(string equipmentNr)
{
var queryEquipment = from utrustning in globalDBConnString.context.utrustnings
where utrustning.utrustningNr == equipmentNr
select new utrustning
{
utrustningNr = utrustning.utrustningNr,
utrustning.beskrivning);
};
return queryEquipment.ToList();
}
答案 2 :(得分:1)
List<utrustning> queryEquipment = from Utrustning in globalDBConnString.context.utrustnings
where Utrustning.utrustningNr == equipmentNr
select new utrustning { Utrustning.utrustningNr, Utrustning.beskrivning };
return queryEquipment.ToList();
答案 3 :(得分:0)
您将无法使用您在那里编写的查询执行此操作...您将返回一个匿名对象,您将无法在代码中为其命名。
假设utrustningNr
和'beskrivning'都是字符串:
更改
select new { utrustning.utrustningNr, utrustning.beskrivning }
为:
select new Tuple<string, string>(utrustning.utrustningNr, utrustning.beskrivning);
然后你的返回类型是
List<Tuple<string, string>>