顯然類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 –