获取SimpleDB属性而不循环遍历项的所有属性

时间:2012-03-02 17:44:01

标签: c# amazon-simpledb

我想使用C#和SimpleDB检查一个属性,而不必遍历特定项目的所有属性。

例如,如果我有我的域:“MyDomain”,并且我有一个项目的三个属性(项目是:george@george.com)。

这三个属性是:

名称
注册
触点


例如,这是我的数据:

MyDomain(域)
george@george.com(item)
George Doe(属性)
3-1-12(属性)
mike@mike.com(属性)



我遇到的问题是我的代码将循环遍历george@george.com项目中的所有3个属性。
例如;当我运行我的代码时,输​​出是:

未找到联系人
找不到联系人 联系方式:mike@mike.com

因为我的代码循环遍历george@george.com项目的所有3个属性。

我想让我的C#代码只检查“Contacts”属性,而不是遍历george@george.com项目的所有属性。

有人可以告诉我该怎么做吗?

AmazonSimpleDB sdb = AWSClientFactory.CreateAmazonSimpleDBClient();

            String selectExpression = "Select * From MyDomain Where Email = 'george@george.com'";
            SelectRequest selectRequestAction =
                new SelectRequest().WithSelectExpression(selectExpression);
            SelectResponse selectResponse = sdb.Select(selectRequestAction);

            if (selectResponse.IsSetSelectResult())
            {
                SelectResult selectResult = selectResponse.SelectResult;
                foreach (Item item in selectResult.Item)
                {

                    foreach (Amazon.SimpleDB.Model.Attribute attribute in item.Attribute)
                    {    
                        if (attribute.IsSetName())
                        {

                            if (attribute.Name == "Contact")
                            {
                                if (attribute.IsSetValue())
                                {
                                    Console.WriteLine("Contact: {0}", attribute.Value);
                                }
                            }
                            else
                            {
                                Console.WriteLine("No Contacts Found");
                            }   
                        }
                    }
                }
            }


我希望它直接检查“联系人”属性以查看是否有值,而不是遍历所有属性。


  

有人能告诉我一个关于如何实现这个目标的C#代码示例吗?谢谢。


编辑:我仍然想要遍历“联系人”属性中的所有“联系人”。我只是不想遍历所有没有名称“Contacts”的属性。 “联系人”属性可以容纳多个联系人,我仍然需要从属性中获取所有这些联系人。

以下Ken的这行代码:

字符串值= item.Attribute.First(a => a.Name ==“Contact”)。值

停止循环不同的属性,但它只返回“联系人”属性中的1个联系人,即使“联系人”属性中存储了多个联系人。

1 个答案:

答案 0 :(得分:2)

您可以使用Attribute运行Amazon simpleDB Query。

select <attribute_name> from <domain_name>

Amazon SimpleDB将仅返回具有此属性的项目,作为响应,即使项目具有其他属性,您也只会获得此属性。