我使用LINQ从数据库中提取单个值:
public string GetPoliceDepartmentName(int id)
{
var PoliceDepartmentName = from p in db.PoliceDepartmentList
join l in db.TrespassOrder on p.PoliceDeptId equals l.PoliceDepartmentId
where l.IncidentId == id
select p.DepartmentName.Single();
return PoliceDepartmentName.ToString();
}
该方法运行,但不返回预期的“Boston PD”,而是返回System.Data.Objects.ObjectQuery`1 [System.Char]
我不确定为什么我的方法没有从queriable转换为string。我会继续研究,但此时提示会很好。
答案 0 :(得分:6)
您正在Single
上调用string
,即IEnumerable<char>
,因此您将从字符串中获得第一个(也是唯一的)字符。这可能不是你想要的。
使用正确的括号,您根本不需要ToString
来电,因为PoliceDepartmentName
会自动键入string
。
var PoliceDepartmentName = (from p in db.PoliceDepartmentList
join l in db.TrespassOrder on p.PoliceDeptId equals l.PoliceDepartmentId
where l.IncidentId == id
select p.DepartmentName).Single();
return PoliceDepartmentName;
答案 1 :(得分:3)
你需要括号:
(from p in db.PoliceDepartmentList
join l in db.TrespassOrder on p.PoliceDeptId equals l.PoliceDepartmentId
where l.IncidentId == id
select p.DepartmentName).Single();