C# 将单个LINQ值转换为字符串

C# 将单个LINQ值转换为字符串,c#,linq,linq-to-entities,C#,Linq,Linq To Entities,我使用LINQ从数据库中提取单个值: public string GetPoliceDepartmentName(int id) { var PoliceDepartmentName = from p in db.PoliceDepartmentList join l in db.TrespassOrder on p.PoliceDeptId equals l.PoliceDepartmentI

我使用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]

我不确定为什么我的方法没有从可查询转换为字符串。我会继续研究,但在这一点上给出一个提示会很好。

您需要括号:

(from p in db.PoliceDepartmentList
 join l in db.TrespassOrder on p.PoliceDeptId equals l.PoliceDepartmentId
 where l.IncidentId == id
 select p.DepartmentName).Single();
你需要括号:

(from p in db.PoliceDepartmentList
 join l in db.TrespassOrder on p.PoliceDeptId equals l.PoliceDepartmentId
 where l.IncidentId == id
 select p.DepartmentName).Single();

您正在调用
string
上的
Single
,它是
IEnumerable
,因此您将从string中获得第一个(也是唯一一个)字符。那可能不是你想要的

使用合适的括号,您根本不需要调用
ToString
,因为
policydepartmentname
将自动成为
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;

您正在调用
string
上的
Single
,它是
IEnumerable
,因此您将从string中获得第一个(也是唯一一个)字符。那可能不是你想要的

使用合适的括号,您根本不需要调用
ToString
,因为
policydepartmentname
将自动成为
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;

好的,现在开始工作。我添加了括号,将.Single改为.First,并删除了.ToString。我理解导致问题的单一因素(字符而不是整个字符串),但为什么我需要括号?哦,是不是因为没有括号,我在打电话。首先是关于p.DepartmentName而不是整个查询?没错。您正在为每个
部门名称
获取一个字符,而不是整个集合中的单个
部门名称
。现在开始工作。我添加了括号,将.Single改为.First,并删除了.ToString。我理解导致问题的单一因素(字符而不是整个字符串),但为什么我需要括号?哦,是不是因为没有括号,我在打电话。首先是关于p.DepartmentName而不是整个查询?没错。您为每个
DepartmentName
获取单个字符,而不是整个集合中的单个
DepartmentName