我有一个类似的方法
public List<GSMData> GetGSMList()
{
return meters.Select(x => x.Gsmdata.Last())
.ToList();
}
我得到了一个"Value不能为null"的示例。如何使其值为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; }
}
您最好检查Gsmdata是否有项目或是否有
public List<GSMData> GetGSMList()
{
return meters.Where(x=>x.Gsmdata!=null && x.Gsmdata.Any()).Select(x => x.Gsmdata.Last())
.ToList();
}
我猜您的Gsmdata
属性是null
。
在这种情况下,您可以使用Linq .Where()
方法来制作:
public List<GSMData> GetGSMList()
{
return meters.Where(x => x.Gsmdata != null)
.Select(x => x.Gsmdata.Last())
.ToList();
}
但是,为了得到更好的答案,你应该澄清什么是无效的。
尝试在执行选择之前立即过滤列表以排除空项。
公共列表GetGSMList(){返回仪表。其中(x=>x.Gsmdata!=null)。选择(x=>x.Gsmdata.Last()).ToList();}