如何返回一个不完整的对象
本文关键字:对象 一个 何返回 返回 | 更新日期: 2023-09-27 18:26:14
我的select语句不会返回整个Customer对象,只返回utrustingNr和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();
}
问题是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命名约定,您的代码将更容易理解。
执行此操作时,您正在选择一个新的匿名类型: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();
}
List<utrustning> queryEquipment = from Utrustning in globalDBConnString.context.utrustnings
where Utrustning.utrustningNr == equipmentNr
select new utrustning { Utrustning.utrustningNr, Utrustning.beskrivning };
return queryEquipment.ToList();
您将无法使用在那里编写的查询执行此操作。。。您正在返回一个匿名对象,您将无法在代码中为其命名。
假设utrustningNr
和"beskrivning"都是字符串:
更改
select new { utrustning.utrustningNr, utrustning.beskrivning }
至:
select new Tuple<string, string>(utrustning.utrustningNr, utrustning.beskrivning);
那么您的退货类型是
List<Tuple<string, string>>