Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从表中选择第一个id_Sql_Linq_Asp.net Mvc 4_Linq To Sql - Fatal编程技术网

Sql 从表中选择第一个id

Sql 从表中选择第一个id,sql,linq,asp.net-mvc-4,linq-to-sql,Sql,Linq,Asp.net Mvc 4,Linq To Sql,我想根据我的子类别列出所有条目。所以我想在加载主页上显示条目列表,而不必事先选择任何类别或子类别 我做了一个查询,返回条目列表,但手动放置子类别ID 以下是查询: int userId = WebSecurity.GetUserId(User.Identity.Name); var preQuery = (from sub in dc.SubCategory join c in dc.Category on sub.SubCategoryId equa

我想根据我的子类别列出所有条目。所以我想在加载主页上显示条目列表,而不必事先选择任何类别或子类别

我做了一个查询,返回条目列表,但手动放置子类别ID

以下是查询:

 int userId = WebSecurity.GetUserId(User.Identity.Name);

  var preQuery = (from sub in dc.SubCategory
                  join c in dc.Category on sub.SubCategoryId equals c.Id
                  join u in dc.User on c.UserId equals u.UserId
                  where u.UserId == userId
                  select sub.SubCategoryId).Take(1).FirstOrDefault();

        var query = (from e in dc.Entry
                     join sub in dc.SubCategory on e.SubCategoryId equals sub.SubCategoryId
                     join cat in dc.Category on sub.CategoryId equals cat.Id
                     join u in dc.User on cat.UserId equals u.UserId
                     where ((u.UserId == userId) && (cat.UserId == userId) 
                         && (sub.CategoryId == cat.Id) && (e.SubCategoryId == preQuery ))
                     select e).ToList();

        return View(query);

因此,我的观点是,我不想手动写入id 6,而是希望获取子类别id列表并从中选择第一个id。我已经进行了预查询,但仍然没有得到所需的结果。有任何建议说明我做错了什么吗?

我能够为我的问题找到解决方案,因此我发布了解决方案。如果任何人有优化解决方案的建议,欢迎分享

  int userId = WebSecurity.GetUserId(User.Identity.Name);

        var preQuery = (from e in dc.Entry
                     join sub in dc.SubCategory on e.SubCategoryId equals sub.SubCategoryId
                     join cat in dc.Category on sub.CategoryId equals cat.Id
                     join u in dc.User on cat.UserId equals u.UserId
                     where u.UserId == userId
                     select e.SubCategoryId).Take(1);

        var query = (from e in dc.Entry
                     join sub in dc.SubCategory on e.SubCategoryId equals sub.SubCategoryId
                     join cat in dc.Category on sub.CategoryId equals cat.Id
                     join u in dc.User on cat.UserId equals u.UserId
                     where ((u.UserId == userId) && (cat.UserId == userId)
                         && (sub.CategoryId == cat.Id) && (e.SubCategoryId == preQuery.FirstOrDefault()))
                     select e).ToList();

        return View(query);

无论出于什么原因,您为什么不想进行预查询,在其中您将选择firs ID。这可能是您进行预查询的最快选项,但仍然不是所需的结果。建议我做错了什么?尝试使用Let