トルネード

毛利のメモ書き

UWP C# DynamoDB Query

Visual Studio 2017 UWP C#プロジェクトDynamoDB Query発行する場合

DynamoDBのQueryを発行する場合、QueryRequest.KeyConditionExpressionに条件を書きます。条件に変数が必要ですが、その変数はExpressionAttributeValuesに設定します。

Itemデータを取得する処理はラムダで処理できるように先に定義しておきます。

public delegate void Proc<in T>(T arg1);

private void ItemForeach(List<Dictionary<string, AttributeValue> > item_, Proc<KeyValuePair<string, AttributeValue> > proc)
{
    foreach (var rec_ in item_)
    {
        foreach (var col_ in rec_)
        {
            proc(col_);
        }
    }
}

クリックイベント部分のコード

private async void Button_Click(object sender, RoutedEventArgs e)
{
    var qres = (await new AmazonDynamoDBClient("キー", "パスワード",
        new AmazonDynamoDBConfig { RegionEndpoint = RegionEndpoint.APNortheast1 }).QueryAsync(new QueryRequest{
            TableName = "テーブル名",
            KeyConditionExpression = "c1 = :c1 and begins_with(c2, :c2) ",
            ExpressionAttributeValues = new Dictionary<string, AttributeValue>
            {
                {":c1", new AttributeValue{S="文字1"} },
                {":c2", new AttributeValue{S="文"} }
            }
            }));

    ItemForeach(qres.Items, (KeyValuePair<string, AttributeValue> col_)=>{
        string str_item = "キー: " + col_.Key + " = ";
        if (col_.Value.N != null)
            str_item += col_.Value.N;
        if (col_.Value.S != null)
            str_item += col_.Value.S;
        ListView1.Items.Add(str_item);
    });
}

f:id:mojeld:20180903121609g:plain