我有这样的方法
public List<GSMData> GetGSMList()
{
return meters.Select(x => x.Gsmdata.Last())
.ToList();
}
我得到一个“值不能为空”。 exeption。我该怎么做才能使值为null?
GSMData对象
public class GSMData : Meter
{
public DateTime TimeStamp { get; set; }
public int SignalStrength { get; set; }
public int CellID { get; set; }
public int LocationAC { get; set; }
public int MobileCC { get; set; }
public int MobileNC { get; set; }
public string ModemManufacturer { get; set; }
public string ModemModel { get; set; }
public string ModemFirmware { get; set; }
public string IMEI { get; set; }
public string IMSI { get; set; }
public string ICCID { get; set; }
public string AccessPointName { get; set; }
public int MobileStatus { get; set; }
public int MobileSettings { get; set; }
public string OperatorName { get; set; }
public int GPRSReconnect { get; set; }
public string PAP_Username { get; set; }
public string PAP_Password { get; set; }
public int Uptime { get; set; }
}
答案 0 :(得分:3)
你最好检查Gsmdata是否有物品
public List<GSMData> GetGSMList()
{
return meters.Where(x=>x.Gsmdata!=null && x.Gsmdata.Any()).Select(x => x.Gsmdata.Last())
.ToList();
}
答案 1 :(得分:0)
我猜测您的Gsmdata
属性为null
。
在这种情况下,您可以使用Linq .Where()
方法来实现:
public List<GSMData> GetGSMList()
{
return meters.Where(x => x.Gsmdata != null)
.Select(x => x.Gsmdata.Last())
.ToList();
}
但是你应该澄清什么是空的,以获得更好的答案。
答案 2 :(得分:0)
尝试通过立即过滤列表并在执行选择之前排除空项目。
public List GetGSMList() { return meters.Where(x=> x.Gsmdata != null).Select(x => x.Gsmdata.Last()) .ToList(); }