显然类MyTable
有System.Guid
类型的属性ID
。
您不指定id
的类型。由于您的错误报告,它不是Guid
。由于它经常起作用,我认为它可以很容易地被解析为Guid
,就像一个字符串。难道有时候,字符串ID不代表正确的Guid
?
别人给不工作的解决方案:
var myTable = dataContext.MyTable.First(); // assume not empty
Guid myGuid = myTable.ID; // assume not empty
string id = myGuid.ToString("X");
// The solution suggested by others does not find the element:
Guid foundGuid = dataContext.MyTable.FirstOrDefault(x => x.ID.ToString() == id.ToString());
原因:myGuid.ToString()的结果是不同的字符串,虽然ID是myGuid串好的表现,这不等于myGuid.ToString ()
下面的代码一定会找到的元素:
Guid idGuid = Guid.Parse(id);
Debug.Assert(myGuid.Equals(idGuid);
Guid foundGuid = dataContext.MyTable.FirstOrDefault(x => x.ID.Equals(idGuid));
如果您不能确定该ID是一个适当的Guid,使用Guid.TryParse
,在代替Guid.Parse
如果它甚至没有解析到正确的GUID,不要打扰开始您的LINQ声明,因为您确定它不在MyTable中
错误与您所查询的错误不符给我们看。错误发生在其他地方。它描述了一个只返回一个'Guid'的函数。你的函数需要一个对象并返回一个'bool'。 – Rob
这里'id'的价值是什么?你将什么查询的结果分配给? – DavidG
你是如何得到id –