Può capitare utilizzando i ControlParameter del LinqDataSource che in mancanza dell'elemento sorgente (es: nessun elemento selezionato nella GridView da cui prenedere la chiave) il parser vada in errore, restituendoci qualcosa come:
Linq Operator '==' incompatible with operand types 'Int32' and 'Object'
Il problema si risove facilmente modificando la Where Expression del LinqDataSource forzando un cast dell'oggetto da confrontare nel nostro tipo atteso.
Quindi da così:
<asp:LinqDataSource ..... Where="nomecampo == @nomeparametro">
A così:
<asp:LinqDataSource ..... Where="nomecampo == Convert.ToInt32(@nomeparametro)">
Per fortuna abbiamo a disposizione i metodi statici di Convert...