当Linq查询运行时,我遇到了问题,我收到了错误Object reference not set to an instance of an object.
var RestaurantName = (from r in objCtx.Restaurants
                      where r.id == item.restaurantid
                      select r).SingleOrDefault<Restaurant>().Name;然后,我将查询更改为
var RestaurantName = (from r in objCtx.Restaurants
                      where r.id == item.restaurantid
                      select r).Single<Restaurant>().Name;但是我收到了错误Sequence contains no elements。我检查了变量,它返回了一个餐馆名称。但我不明白为什么我会收到这些错误。
发布于 2014-03-07 19:51:53
问题是集合中没有满足条件的项。SingleOrDefault返回null (用于引用类型),因此在第一个版本中,您将收到一个NullReferenceException。如果没有返回的元素,Single会抛出异常,这就是第二种方法失败的原因。
您需要检查是否有任何结果:
var restaurant = (from r in objCtx.Restaurants
                  where r.id == item.restaurantid
                  select r).SingleOrDefault<Restaurant>();
string restaurantName;
if (restaurant != null)
    restaurantName = restaurant.Name;
else
    restaurantName = string.Empty;https://stackoverflow.com/questions/22259344
复制相似问题