将单个LINQ值转换为字符串

时间:2014-05-28 22:16:44

标签: 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.PoliceDepartmentId
                                   where l.IncidentId == id
                                   select p.DepartmentName.Single();
        return PoliceDepartmentName.ToString();
    }

该方法运行,但不返回预期的“Boston PD”,而是返回System.Data.Objects.ObjectQuery`1 [System.Char]

我不确定为什么我的方法没有从queriable转换为string。我会继续研究,但此时提示会很好。

2 个答案:

答案 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();