如何使Value不能为null,null

时间:2014-04-16 09:19:02

标签: c# linq null

我有这样的方法

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; }
    }

3 个答案:

答案 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();
        }