That will work, but keep in mind that it can't use any indexes.
If you need to use an index, your best best is to store the field twice, with the second copy being all lower case, and then using a regular EQ search against that.
Query.EQ("UsernameLowerCase", username.ToLower())
and it will use an index on UsernameLowerCase if one exists.