有人能帮我把这个MySQL语句转换成LinqLambda吗

本文关键字:语句 MySQL 转换 LinqLambda | 更新日期: 2023-09-27 18:13:16

我需要帮助将此查询转换为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)
            }

我得到了这个:

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

有人能帮我把这个MySQL语句转换成LinqLambda吗

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