如何返回一个不完整的对象

本文关键字:对象 一个 何返回 返回 | 更新日期: 2023-09-27 18:26:14

我的select语句不会返回整个Customer对象,只返回utrustingNrbeskrivning。如何在不出现以下错误的情况下以正确的方式返回:

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>>
相关文章: