【问题标题】:Error converting query to string将查询转换为字符串时出错
【发布时间】:2015-04-24 22:29:40
【问题描述】:

我在将查询转换为字符串时遇到问题...我进行了研究,发现大多数答案是第一个或单个附加到查询的末尾,这可以清楚地看到。我认为这可能是缓存问题,所以清理了解决方案。我在下面得到一个错误

错误 1 ​​无法将类型“JobTracker.Models.Location”隐式转换为 '字符串'

有问题的代码:

public static string ClientIPName()
{
    string ClientIP = null;
    ClientIP = HttpContext.Current.Request.UserHostAddress;
    return ClientIP;
}

public static string LocationIPAssign()
{
    JobData db = new JobData();

    var workstationLocation = ClientIPName();
    var result = db.Locations
        .Where(l => l.AssignedIP == workstationLocation)
        .FirstOrDefault();

    return result;
}

初始错误:

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

任何想法可能导致此错误?

【问题讨论】:

  • result 不是您的函数期望返回的类型?
  • 您收到与不匹配的类型相关的错误消息。然而,您的问题不包括有关它们可能是什么的任何信息。请edit您的问题,并添加其声明的相关部分,包括包含return result;的函数的预期返回类型@
  • 异常实际发生在哪一行?在该行上,将鼠标悬停在每种类型上,以确定转换尝试发生的位置。
  • 我在“返回结果”@YuriyFaktorovich 处收到错误
  • @goldeneye 听起来返回类型是字符串,而结果是位置。得选一个。

标签: c# asp.net-mvc linq


【解决方案1】:

您的FirstOrDefault 调用会产生一个Location 对象,而您显然想要一个string。我的猜测是Location 上的属性之一是您要返回的属性,因此请选择关闭该值。

var result = db.Locations
    .Where(l => l.AssignedIP == workstationLocation)
    .Select(l => l.<whatever string property you want>)
    .FirstOrDefault();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-23
    • 2014-01-23
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多