原则上,我花时间做了类似下面的事情。
public async Task<ItemA> GetItemsA(object someParams)
{
var res = new List<ItemA>();
var listOfItemAIds = await GetIdsFromServerAsync(someParams);
var tableAQuery = _tableA.Where(x => listOfItemAIds.Contains(x.Id));
await _tableA.PullAsync(null, tableAQuery);
var itemsA= await tableAQuery.ToListAsync();
var listOfItemBIds = itemsA.Select(x => x.bId).ToList();
await _tableB.PullAsync(null, _tableB.Where(x => listOfItemBIds .Contains(x.Id));
foreach(var itemA in itemsA)
{
itemA.ItemB = await _tableB.LookupAsync(itemA.itemBId);
}
return res;
}
有几个问题:
listOfTableAIds.Contains(x.Id)
由于网址长度限制而导致错误listOfItemAIds
或listOfItemBIds
的内容queryId
少于50个字符,我最终会提取我可能已有的数据
有关如何改进该序列的任何建议?
答案 0 :(得分:0)
我建议您优化一些内容,以便查询更简单。您可以整体提取更多数据,但随后该数据将在tableB中可用。例如,您可能想说“itemBId不为空”。