无法将System.Linq.IQueryable 类型隐式转换为字符串

我有两个名为Rank和CrewMembers的表。我想根据CrewMember的id获取Rank表中存在的rank的名称。我已经将crewId作为参数传递,并且在此基础上该方法将返回该特定船员的等级。这就是我的代码是 –

public string GetRank(int CrewId) { string rank = (from r1 in context.Rank join r2 in context.CrewMember on r1.RankId equals r2.RankId where r2.CrewId == CrewId select r1.RankName); return rank; } 

当我构建代码时,我得到以下错误 –

无法将System.Linq.IQueryable类型隐式转换为字符串

我哪里错了?

您应该使用FirstOrDefault或SingleOrDefault:

 public string GetRank(int CrewId) { string rank = (from r1 in context.Rank join r2 in context.CrewMember on r1.RankId equals r2.RankId where r2.CrewId == CrewId select r1.RankName).SingleOrDefault(); return rank; }