if there is only one element in the result, it is not converted to a collection. You need to do it manually. Something like this.
if(event.result is ArrayCollection)
dp = event.result as ArrayCollection;
else if(event.result is ObjectProxy)
dp = new ArrayCollection([event.result]);
And if there no results?
How avoid to a runtime error?