如何从List<FlightDetails>中移除指定属性,仅保留指定字段返回
解决方案
方法一:创建专用DTO类(推荐)
这是最规范的实现方式,既能保留原有业务类的完整性,又能明确控制返回的数据结构:
- 先定义一个仅包含所需字段的DTO(数据传输对象)类:
public class FlightSummary { public string PilotName { get; set; } public string Area { get; set; } }
- 修改接口方法的返回类型,并将查询到的
FlightDetails对象映射为FlightSummary:
public async Task<List<FlightSummary>> GetFlightAsync(string flightId) { // 修正原代码笔误:request应改为response var response = await _rest.Get<WorldFlights>(url + $"?FlightId={flightId}"); return response.AllFlights .Where(x => x.FlightId.Contains(flightId)) .Select(x => new FlightSummary { PilotName = x.PilotName, Area = x.Area }) .ToList(); }
方法二:使用匿名类型(适合临时场景)
如果不想新建类,可以直接返回匿名类型,但这种方式没有强类型提示,仅适合快速临时需求:
public async Task<List<dynamic>> GetFlightAsync(string flightId) { var response = await _rest.Get<WorldFlights>(url + $"?FlightId={flightId}"); return response.AllFlights .Where(x => x.FlightId.Contains(flightId)) .Select(x => new { x.PilotName, x.Area }) .Cast<dynamic>() .ToList(); }
注意点
原代码存在一处笔误:定义了var request但后续使用的是response.AllFlights,需修正为var response才能正常运行。
内容的提问来源于stack exchange,提问作者alex dave
相关产品推荐
相关产品推荐

