0

このコードで:

public static async Task<List<DUCKBILLED_PLATYPI>> GetLocationsForPlatypiAndTimeRange(HashSet<string> PlatypiIds, DateTime EarliestToShow, DateTime LatestToShow)
{
    List<DUCKBILLED_PLATYPI> listLocs = new List<DUCKBILLED_PLATYPI>();
    List<string> PlatypusBillIDList;
    string PlatypusBillID; 
    IMobileServiceTable<DUCKBILLED_PLATYPI> table = App.MobileService.GetTable<DUCKBILLED_PLATYPI>();
    MobileServiceTableQuery<DUCKBILLED_PLATYPI> query;

    foreach (var item in PlatypiIds)
    {
            PlatypusBillIDList = await GetPlatypusBillIDForPlatypusID(item);
    PlatypusBillID = PlatypusBillIDList[0];
    query = 
        table.Where(l => l.PlatypusBillID == PlatypusBillID).
              Where(l => l.UpdateTimeUTC >= EarliestToShow).
              Where(l => l.UpdateTimeUTC <= LatestToShow).
              OrderBy(l => l.UpdateTimeUTC);
    listLocs.Add(query);
    }
    return listLocs;
}

...同じ行 (" listLocs.Add(query); " 行)に 2 つのエラー メッセージが表示されます。彼らです:

1) Error    1   The best overloaded method match for 'System.Collections.Generic.List<MetroSandboxPlaypen.TaSLs_Data.DUCKBILLED_PLATYPI>.Add(MetroSandboxPlaypen.TaSLs_Data.DUCKBILLED_PLATYPI)' has some invalid arguments
2) Error    2   Argument 1: cannot convert from 'Microsoft.WindowsAzure.MobileServices.MobileServiceTableQuery<MetroSandboxPlaypen.TaSLs_Data.DUCKBILLED_PLATYPI>' to 'MetroSandboxPlaypen.TaSLs_Data.DUCKBILLED_PLATYPI'
4

1 に答える 1

1

クエリを実行していません。それを具体化する必要があります: await query.ToListAsyncまたはawait query.ToEnumerableAsync。0、1、または複数の行が返される可能性があるため、listLocs.AddRangeと を比較して使用する必要もあります。Add

別のメモとして、あなたは にいくつのアイテムを期待していますPlatypiIdsか? あなたのループは、アイテムごとに少なくとも 2 つのサービス呼び出しを行っているように見えるので、おしゃべりがエンド ユーザー エクスペリエンスに影響を与えるかどうかをテストし、代わりに 1 つまたは 2 つのクエリですべてのデータを取得しようとする場合があります。

于 2012-12-15T01:24:14.363 に答える