C# Linq查询中的Guid.ToString()?

C# Linq查询中的Guid.ToString()?,c#,sql,linq,C#,Sql,Linq,我有一个方法,它试图用一个简单的where子句从我的db中提取一条记录。我有一个问题,因为我正在传入一个字符串值并将其与Guid(uniqueIdentifier)匹配。我需要将传递的值作为字符串绑定到DataGrid中,并且需要方法返回字符串 显然,在运行时,LinQ无法编译查询。无法将.ToString()方法编译为SQL。有什么想法吗 private string getFileLocation(string LinkGuid) { try { ISESEn

我有一个方法,它试图用一个简单的where子句从我的db中提取一条记录。我有一个问题,因为我正在传入一个字符串值并将其与Guid(uniqueIdentifier)匹配。我需要将传递的值作为字符串绑定到DataGrid中,并且需要方法返回字符串

显然,在运行时,LinQ无法编译查询。无法将
.ToString()
方法编译为SQL。有什么想法吗

private string getFileLocation(string LinkGuid)
{
    try
    {
        ISESEntities context = new ISESEntities();

        string query = (from f in context.tbFileAttachments
                where f.CCCPGUID.ToString() == LinkGuid
                select f.FileLocation).First();

        return query;           
    }
    catch(Exception e)
    {
       blah blah
    }
}

切换逻辑并将
LinkGuid
参数转换为Guid:

private string getFileLocation(string LinkGuid)
{
    try
    {
        Guid search = Guid.Parse(LinkGuid);

        ISESEntities context = new ISESEntities();

        string query = (from f in context.tbFileAttachments
                where f.CCCPGUID == search
                select f.FileLocation).First();

        return query;           
    }
    catch(Exception e)
    {
       blah blah
    }
}

LINQ提供程序可能不知道如何将
ToString
Guid
属性转换为SQL查询。对于示例,我将使用
Guid
对象进行比较:

Entities context = new ISESEntities();

Guid linkGuid = Guid.Parse(LinkGuid);

string query = (from f in context.tbFileAttachments
                where f.CCCPGUID == linkGuid
                select f.FileLocation).First();

return query;           

不要在
Guid
字段上调用
ToString
,而是将参数字符串转换为Guid,然后在查询中传递:

Guid parameterGuid = Guid.Parse(LinkGuid);
string query = (from f in context.tbFileAttachments
               where f.CCCPGUID == parameterGuid 
               select f.FileLocation).First();
太好了,谢谢你们。Guid.Parse()方法,非常有用:)