2012-03-02 65 views
3

我想检查使用C#和SimpleDB的属性,而不必遍历特定项目的所有属性。获取SimpleDB属性,无需循环通过项目的所有属性

例如,如果我有我的域名:“MyDomain”,并且我有一个项目的三个属性(该项目是:[email protected])。

的三个属性是:

名称
注册
联系


因此,例如,这是我的数据:

MYDOMAIN(域)
   乔治@乔治.com(item)
       乔治·多伊(属性)
        3-1-12(属性)
        [email protected](属性)



我遇到的问题我的代码将遍历[email protected]项目中的所有3个属性。
例如;当我运行我的代码输出为:

找不到联系人
找到
联系电话联系人:[email protected]

,因为我的代码是通过为乔治@乔治所有3个属性循环。 com项目。

我想让我的C#代码只检查“联系人”属性,而不是遍历[email protected]项目的所有属性。

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

AmazonSimpleDB sdb = AWSClientFactory.CreateAmazonSimpleDBClient(); 

      String selectExpression = "Select * From MyDomain Where Email = '[email protected]'"; 
      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#代码示例?谢谢。


编辑:我仍然想通过“联系人”属性中的所有“联系人”进行循环。我只是不想循环所有没有名称“联系人”的属性。 “联系人”属性可以拥有多个联系人,我仍然需要从属性中获取所有这些联系人。

这行Ken的代码如下:

string value = item.Attribute.First(a => a.Name ==“Contact”)。值

可以停止不同属性的循环,但只会从“联系人”属性返回1个联系人,即使“联系人”属性中存储的联系人超过1个也是如此。

+0

您可以尝试'字符串值= item.Attribute.First(a => a.Name ==“Contact”)。值'如果您知道*它存在或'FirstOrDefault'并检查结果。 – 2012-03-02 17:49:51

+0

这可以停止循环,但如果在“联系人”属性中有多个联系人,它只会返回第一个联系人。我仍然想要遍历“联系人”属性中的所有不同联系人,我只是不想循环查看“联系人”以外的所有不同属性。 – fraXis 2012-03-02 20:09:23

回答

1

您可以使用Attribute运行Amazon simpleDB查询。

select <attribute_name> from <domain_name> 

和亚马逊的SimpleDB将只返回具有此属性的项目,并响应你会得到物品,甚至有其他属性只有这个属性。