繁体   English   中英

谁能帮我把这个 MySQL 语句转换成 Linq lambda?

[英]Can anyone help me convert this MySQL statement into Linq lambda?

我需要帮助将此查询转换为 linq。

select Title from titles
INNER JOIN UserTitles on UserTitles.TitleId = titles.TitleId
where UserTitles.UserId = currentUserId

这样我就可以循环用户标题:

例如:姓名、BS、BA、PHD

当我有这些表时:

用户:

+---------------+----------+
| currentUserId | UserName |
+---------------+----------+
|             1 | Dave     |
+---------------+----------+

标题:

+---------+-------+
| TitleId | Title |
+---------+-------+
|       1 | BS    |
|       2 | MD    |
|       3 | PHD   |
|       4 | BA    |
+---------+-------+

用户名:

+--------+---------+
| UserId | TitleId |
+--------+---------+
|      1 |       1 |
|      1 |       2 |
|      1 |       3 |
|      1 |       4 |
+--------+---------+

编辑

在我的控制器中,我有这个:

IEnumerable<String> thisresult = _contentService.Titles
.Join(_contentService.UserTitles.Where(x => x.UserId == currentUserId),
t => t.Id,
ut => ut.TitleId,
(t, ut) => t.TitleString);

var model = new ManageUserViewModel()
        {
            Titlelist = thisresult
        };


        return View(model);

在我的 ViewModel 我有这个:

public IEnumerable<String> Titlelist { get; set; }

在我看来,我有这个:

@foreach (var title in Model.Titlelist)
            {
                @Html.Raw(title)
            }

我明白了:

“/”应用程序中的服务器错误。 不支持指定的方法。

var result=db.titles
  .Join(db.UserTitles.Where(x => x.UserId == currentUserId),
    t=>t.TitleId,
    ut=>ut.TitleId,
    (t,ut)=>ut.Title);

如果使用实体框架,并正确设置用户和具有适当导航属性的标题表,它将是:

var result=db.Users
  .Where(u=>u.UserId == currentUserId)
  .Select(u=>u.Titles);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM