在获取某些单元格值时出现LINQ - null异常

本文关键字:LINQ null 异常 获取 单元格 | 更新日期: 2023-09-27 18:06:31

在LINQ方面我是个新手。我读过一些null异常,大多数都指向

是问题的根源。

我遇到了:

函数求值需要所有线程运行。

我试图检索

字段名

从TrashPlaces(它只有2个字段- id和名称)由字符串id我从UserPlace记录(UserPlace有2个键- 1是userId,可以从AspNetUsers检索,另一个是TrashPlace id)。我在这个LINQ代码中遇到了null问题:

        public ActionResult JsonResult()
        {
            var users = db.AspNetUsers;
             //this was added, so I could root out mismatch in the queryId
            var nameformyuser = User.Identity.Name;

 //the null starts here and no-shock it goes further (meaning query is null  and 
 //can't do nothing later)
            var queryId = from user in users.AsEnumerable()
                        where user.Email == User.Identity.Name
                        select user.Id;

            var placerecord = db.UserPlace;

            var userplace = from uplace in placerecord.AsEnumerable()
                        where uplace.usersId == queryId.ToString()
                            select uplace.placesId;
            var places = db.TrashPlaces;
            var field = from blah in places.AsEnumerable()
                        where blah.Id == userplace.ToString()
                        select blah.nameOfThePlace;



           TempData["username"] = User.Identity.Name;
            TempData["fieldname"] = field.ToString();
            TempData["datename"] = DateTime.Now;

            List<TrashViewModel> json = (List<TrashViewModel>)TempData["jsonList"];

            return View(json);
    }

将非常感谢您的帮助和/或建议,什么是实现级联LINQ的最佳方法。

谢谢!

在获取某些单元格值时出现LINQ - null异常

您可以一次完成所有操作(顺便说一下,不要太早枚举,这对性能不利)。

不知道为什么你使用ToString(),如果你的id是相同的类型,你不应该有。

var query = from u in db.AspNetUsers
            join up in db.db.UserPlace on u.Id equals  up.usersId 
            join tp in db.TrashPlaces on up.placesId equals tp.Id
            where u.Email == User.Identity.Name
            select tp.nameOfThePlace;//or more data if you need to.
var result = query.FirstOrDefault(); //or query.AsEnumerable()

然后你可以做一个空检查

if (result == null) 

在您的示例中,对于TempData,您可以只执行

TempData["fieldname"] = result == null ? string.Empty : result;

TempData["fieldname"] = result;

但是在使用它之前,您必须检查TempData["fieldname"]是否不为空。div…