Как правило, вы получаете сообщения об ошибках неверных входов, если вы пытаетесь использовать операцию, которая не поддерживается службой.Имейте в виду, что полный набор операций LINQ (сортировка, min, max и т. Д.) Недоступен в службе (хотя они могут быть вычислены локально).Ваш первый шаг в устранении неисправностей должен состоять в том, чтобы посмотреть на реальные операции, которые вы пытаетесь.Если вы используете что-то отличное от .Select () или .Where (), есть большая вероятность, что оно в настоящее время не поддерживается.
Edit : как только я написал это, ястолкнулся с подобной ошибкой.Поскольку я уже знаю, какие операции поддерживаются, я подумал, что покажу вам код, который использовал для устранения неполадок:
void Main()
{
var acct = CloudStorageAccount.DevelopmentStorageAccount;
var client = acct.CreateCloudTableClient();
var ctx = client.GetDataServiceContext();
ctx.IgnoreMissingProperties = true;
var table = "tl36f6e92d94954f168ade0be6a547c0ce";
//build query
var q = ctx.CreateQuery<Foo>(table)
.Where(e => e.RowKey.CompareTo(2) < 0) //this query fails
.Take(10);
//Dump URI to inspect
((DataServiceQuery)q).RequestUri.Dump();
//dump results
q.Dump();
}
[System.Data.Services.Common.DataServiceKey("PartitionKey", "RowKey")]
class Foo
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Whatever { get; set; }
}
Я поместил это в LINQPad (лучший инструмент из когда-либо созданных) и просто посмотрел на URI.Стало ясно, что сравнение, которое я проводил, ожидало строку и сравнивалось как целое число.Я, конечно, упростил реальный запрос, но моя точка зрения остается в силе.Я все время использую этот инструмент для моделирования своих запросов и проверки того, что на самом деле происходит.