我需要帮助将此查询转换为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 |
+---------+-------+
UserTitles:
+--------+---------+
| 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)
}
我明白了:
>'/'应用程序中的服务器错误。 不支持指定的方法。答案 0 :(得分:0)
var result=db.titles
.Join(db.UserTitles.Where(x => x.UserId == currentUserId),
t=>t.TitleId,
ut=>ut.TitleId,
(t,ut)=>ut.Title);
如果使用Entity Framework,正确设置Users,并使用具有相应导航属性的Titles表,那么它将是:
var result=db.Users
.Where(u=>u.UserId == currentUserId)
.Select(u=>u.Titles);