The query needs to be wrapped in a
<View>...</View>
element, in addition to the<Query>
element.As per the generated query, the field name is
ID
notId
.
On a side note, make sure you're disposing of the client context.
And of course, to get an item by ID you can bypass this entire process and just use
var item = list.GetItemById(ID);